Memorizar valor de variável

10 respostas
rafael.luc

Estou com uma variável dentro de uma classe que é chamada por um IF em uma outra classe. Gostaria de manter o valor da varivel quando chama-la na proxima vez a classe para que determinada condição não se repita.

10 Respostas

yhhik

como??
nao entendi…
vc quer passar a variavel de uma classe pra outra é isso?
se for isso passe pelo construtor.

rafael.luc

Eu tenho uma classe que chama por um IF a outra classe que me retorna uma string codico, a classe “codico” quando chamada não deve me retornar nenhuma string codico, caso o valor que compõe parte da string seja o mesmo do anterior, isso eu ja fiz.
O preciso é que “valor” fique armazenado, mesmo que a classe codico não seja chamada. PS: a variável “valor” é criada na classe codico.

asousaj

Rafael,
da pra colocar parte de seus codigos aqui? Facilita mais para entender o que quer.

Flw!

rafael.luc

Bom vou tentar resumir, estou executando o programa no eclipse

import rt.Master;

public class VO {
	
public static void main(String args[]) {
	
int porta = 1;

            Master master = new Master();
            
			if (porta == 1){
				
				master.setEnable(1);

				if (master.noRequest == false){
			                System.out.println(master.request);
				}else {
					System.out.println("repetido");	
				}
			
            
	           }
        }

}

Aqui uma parte do codico da outra classe chamada.

request = tags.id + "1" + String.format("%02d",cont)+"1"+String.format("%03d",valueOut);
                                      
                                     if (!request.equals(reqDo)){
                    	                     noRequest = false; 
                                             reqDo = request;
                                    } else {
                    	                     noRequest = true;
                                  }
Essa parte evita imprimir uma string repetida. Quero salvar a string globalmente para próxima vez de chamada. A variável seria a string "reqDo"
brmonteiro

Bom eu acredito que vc esta querendo criar uma variavel estatica

para isso vc tem que declará-la assim

static String variavel

mas lembrando que tem que tomar cuidado com as variaveis estaticas uma vez que
acabam fugindo do POO e tornando POG kkkkkkk

rafael.luc

Olhei as características das variáveis static acredito que resolva meu problema, tenho que dar algum jeito de testar.

mas lembrando que tem que tomar cuidado com as variaveis estaticas uma vez que
acabam fugindo do POO e tornando POG

Poderia explicar melhor?

brmonteiro

por exemplo

public class Usuario {
    
    private static String login;
    private static String perfil;

    public static String getLogin() {
        return login;
    }

    public static void setLogin(String login) {
        Usuario.login = login;
    }

    public static String getPerfil() {
        return perfil;
    }

    public static void setPerfil(String perfil) {
        Usuario.perfil = perfil;
    }
    
    
    
    
}
public class Main {
    
    public static void main(String args[]){
        //cria a lista
   
        Usuario.setLogin("Breno");// nao precisa do new para chamar métodos estáticos
        Usuario.setPerfil("Administrador");
    
    
    
    }
    
}

qualquer lugar que tu fores usar os getters getLogin e getPerfil

eles serão Breno e Administrador

lembre-se de evitar programar desa forma

pois muitas das vezes as variáveis estáticas fogem do que chamamos de orientação objetos
para verdadeiros algoritmos procedurais

em relacao a esta celeuma em relacao aos problemas das variaveis estáticas recomendo fortemente a leitura desse artigo

[url]http://blog.caelum.com.br/singletons-e-static-perigo-a-vista/[/url]

rafael.luc

Obrigado pela ajuda

rmendes08

Isso que você quer chama-se manter estado. A responsabilidade de manter estado é do próprio objeto, e não deve ser controlada por outros objetos. Por exemplo o código abaixo:

class Porta{
  private boolean aberta; //ninguém acessa o estado do objeto diretamente

  public boolean isAberta(){ return aberta; } //permite consultar o estado

  //manipula o estado de maneira consistente
  public boolean abrir(){ if(!aberta) aberta = true; }
  public boolean fechar(){ if(aberta) aberta = false;}
}

class Pessoa{
  void abrePorta(Porta p){
     p.abrir();
  }
}

é melhor que

class Porta{
  private boolean aberta;

  public boolean isAberta(){ return aberta; }
  public void setAberta(boolean aberta){this.aberta = aberta;}
}

class Pessoa{
  void abrePorta(Porta p){
     if(! p.isAberta) p.setAberta(true);
  }
}

pois a sua classe Pessoa tem que cuidar para manter o estado consistente da porta. O prejuízo dessa abordagem é que toda classe que utilizar um objeto Porta tem que cuidar para manter esse estado, de forma que o mesmo código será replicado em diversos lugares.

Agora, para te ajudar, você precisa postar o seu código …

rafael.luc

@rmendes08, entendi o que você disse, mas não é exatamente a minha duvida.

No meu caso é uma modificação em programa que não foi feito por mim. Neste programa tenho uma classe que abre e fecha a porta serial “vamos chamar a classe de principal”. A logica para calculo dos codicos recebidos e enviados ficou extenso, então criei duas classes novas, uma para quando a porta abre e outra quando fecha que são acessadas pela classe principal de acordo com dados presentes na porta “envia codicos quando não ha dados na porta”.
A questão é que tenho manter gravado o valor de uma string que ja foi enviada pela porta, mesmo quando a classe não e acessada pela classe principal.

Criado 25 de novembro de 2011
Ultima resposta 29 de nov. de 2011
Respostas 10
Participantes 5