Setter normal getter retorna null

12 respostas
0

estou tentando mandar uma variavel de uma classe para outra e to fazendo assim

na 1ª classe

user ur = new user();
ur.setUser(login);

ta assim o getter e setter

public String getUser() {
        return user;
    }

    public void setUser(String user) {
        
        this.user = user;
        System.out.println(user);
    }
         public String user;

dai no 2ª classe pus

user ur = new user();
    System.out.println(ur.getUser());

no primeiro System.out.println retorna o login e no segundo no getUser retorna null pq?

12 Respostas

G

Boa Noite

Fiz uma nova implementação, agora ta aparecendo o Imprimir dos dois, da uma olhadinha se era isto:

public class Usr {

		public String user;
		
		public String getUser() {
			return user;
		}

		public void setUser(String user) {
			this.user = user;
			System.out.println(user);
		}
			

	}

e a Principal com o Metodo main:

public class PrincipalUsr {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Carga();
	}
	
	public static void Carga()
	{
		Usr usr=new Usr();
		usr.setUser("Login do User");
		System.out.println(usr.getUser());
	}

}

Saida:

Login do User
Login do User

Abraços

L

Editado pois foi resolvido.

0

bem não resolveu não como disse estão em classes diferentes

e o parametro que seta o valor é login

ai fica assim

public String login;

e num evento de um botão:
login = jTextField1.getText();
e quando o login é efetuado com sucesso ele manda o nome do login para o setter por que eu tenho que recuperar ele em um jFrame
user ur = new user();
                  ur.setUser(login);

e no Jframe eu chamei essa função

private void imprime() {
         user ur = new user();
        System.out.println(ur.getUser());
    }

e continuou a retornar null

L

É porque você está atribuindo a variável de referência à uma nova instância da Classe. Aí o novo objeto é construído com atributos null (caso for um atributo do tipo de alguma classe).

Tire a expressão de criação de uma nova instância que provavelmente dará certo.

Att.

0

realmente mas como posso passar a variavel pra outra classe? por que tenho que preecher um campo com essa string e não estou conseguindo passar já que com o getters nao dá :frowning: nem mandando pra um metodo tbm não está funcionando

L

Uma soluçao é voce dar um set e depois serializar o objeto. Aí na outra classe você desserializa o objeto.

0

no caso dar set em uma classe e get em outra?

L

Não, isso te retornaria um Null, já que você está criando uma nova instância.

Voce quer fazer um esquema tipo sessão? Onde o usuario faz Login e depois aparece o nome dele na tela principal?

Se for voce pode fazer por Serialização, ou dê uma olhada neste tópico:

http://www.guj.com.br/posts/list/126007.java

At.

nel

Bom dia.

Uma pergunta, se está utilizando getter e setter para atribuir/buscar valores de uma variavél (o que considero o correto), porque declarou sua variavél como publica? O correto seria que ela fosse private, concorda?

Pelo menos foi isso que eu verifiquei na sua classe.
Abraços.

0

mesmo private retorna null

coloquei o getter e o setter na classe 2 daí ficou assim

private String login;


//num evento do botão


login = jTextField.getText();

//dai faz umas condições e chama a função pricipal a login();

//dai já na login depois de ter passado por todas as condições manda


                 gerenciador ur = new gerenciador();
                  ur.setUser(login);

e na classe 2

public String user;



    public String getUser() {
        return user;
    }

    public void setUser(String user) {

        this.user = user;
      
    }

    public void imprime() {
       System.out.println(getUser());
    }

ai uma função principal chama o imprime(); e retorna null

L

O certo é ocultar(encapsular) os dados da classe sim. Porém isso nao vai interferir se o método get está retornando null, neste teu caso.

O problema é que você está instanciando um novo Objeto, e as variáveis de instância está localizada juntamente com o objeto no Heap.

A partir do momento que voce cria um novo objeto, um novo espaço na pilha de lixo coletável é alocado, gerando novas variáveis de instância que são configuradas com valores padrão, se o contrutor nao fornecer um valor. No caso da String, o valor padrão é null, por ser um objeto.

Mas afinal de contas, do que você precisa??

Explica melhor o seu problema para tentarmos te ajudar melhor.

0

explicar melhor vou dizer o que disse mais pra cima

tenho um login e preciso do nome de usuario na 2ª classe

Criado 22 de janeiro de 2010
Ultima resposta 23 de jan. de 2010
Respostas 12
Participantes 4