Duvida sobre variáveis de referência

Olá pessoal, este é meu primeiro post nesse forum. Estou com uma duvida nessa questão 7 (em anexo). Na observação diz que não é necessário manter variáveis para essas referencias, então não posso fazer, por exemplo:

Cliente a = new Cliente ( parametros aqui... )

Então como devo criar o objeto? Seria através de um método static? Como por exemplo:

Cliente.criarCliente ( parametros aqui... )

ou

Cliente a = Cliente.criarCliente ( parametros aqui... )

Outra dúvida, o método construtor da classe cliente no exercicio não recebe o endereço como parametro, a solução seria usar um “setEndereco” certo? Mas como fazer isso se não tenho uma variável como referência para o cliente? Se não ficou muito claro, explico de novo. Aguardo respostas!


Não creio que seja isso…

Primeiro, você não pode construir um objeto por métodos, apenas construtores (Isso é meio que lógico)

Segundo, não dá pra usar o modificador “static” em um construtor

E terceiro, se você cria um objeto, você já está criando uma referência para ele na memória. Tenta rever o exercício lá do começo ou posta ele todo aqui

[quote=War Paz]Não creio que seja isso…

Primeiro, você não pode construir um objeto por métodos, apenas construtores (Isso é meio que lógico)

Segundo, não dá pra usar o modificador “static” em um construtor

E terceiro, se você cria um objeto, você já está criando uma referência para ele na memória. Tenta rever o exercício lá do começo ou posta ele todo aqui[/quote]

Na verdade, alguns objetos em Java só podem ser criados por métodos extáticos de sua classe.

EDIT:

Aki é um exemplo dele.

Connection conn = DriverManager.getConnection(arg0);

[quote=Ziru][quote=War Paz]Não creio que seja isso…

Primeiro, você não pode construir um objeto por métodos, apenas construtores (Isso é meio que lógico)

Segundo, não dá pra usar o modificador “static” em um construtor

E terceiro, se você cria um objeto, você já está criando uma referência para ele na memória. Tenta rever o exercício lá do começo ou posta ele todo aqui[/quote]

Na verdade, alguns objetos em Java só podem ser criados por métodos extáticos de sua classe.[/quote]

Opa, desculpa então. Também tô aqui pra aprender, né? :slight_smile:

Obrigado por corrigir :slight_smile:

Sem problemas, estamos todos aqui para aprender mesmo.

[quote=darkmen]Olá pessoal, este é meu primeiro post nesse forum. Estou com uma duvida nessa questão 7 (em anexo). Na observação diz que não é necessário manter variáveis para essas referencias, então não posso fazer, por exemplo:

Cliente a = new Cliente ( parametros aqui... )

Então como devo criar o objeto? Seria através de um método static? Como por exemplo:

Cliente.criarCliente ( parametros aqui... )

ou

Cliente a = Cliente.criarCliente ( parametros aqui... )

Outra dúvida, o método construtor da classe cliente no exercicio não recebe o endereço como parametro, a solução seria usar um “setEndereco” certo? Mas como fazer isso se não tenho uma variável como referência para o cliente? Se não ficou muito claro, explico de novo. Aguardo respostas!

[/quote]

Para não manter variáveis como referência, basta fazer:

new Cliente ( parametros aqui... )

Dá para, por exemplo, adicionar a uma lista da seguinte forma (poderia ser em um outro objeto tbm…):

List<Cliente> clientes = new ArrayList()<>;
clientes.add(new Cliente(parametros));

No segundo caso, existe uma referência ao Cliente gerado, é o clientes.get(indice), mas pelo escrito no exercício 8, acho que seu professor não está considerando isso como “manter variáveis para essas referências”.

Com esse clientes.get(indice) você pode chamar o set…

mas é só um chute… precisa dar uma olhada melhor no contexto dos exercícios para entender melhor o que ele quer. Dei apenas algumas possíveis ideias pra você ir pensando.

Obrigado pelas respostas pessoal, mas ainda não entendi direito. Vou postar o exercício todo.

eu não sei se a maneira que eu to fazendo aqui está correta, mas eu pensei a solução dessa questão dessa maneira:

Clientes

[code]import java.util.ArrayList;

public class Clientes {

private String nome;
private static ArrayList<Clientes> c = new ArrayList<Clientes>();

public Clientes(String nome) {
	this.nome = nome;
}

public static void criaCliente(String nome) {
	c.add(new Clientes(nome));	
}

public static void PegarClientes() {
	int i = c.size();
	System.out.println(i);
	for (Clientes contato: c) {
	      System.out.println(contato.nome);
	    }

}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

}
[/code]

[code]public class Principal {

/**
 * @param args
 */
public static void main(String[] args) {
	Clientes.criaCliente("Felipe");
	Clientes.criaCliente("Diego");
	Clientes.PegarClientes();

}

}
[/code]

O exercício pede para não utilizar variáveis de referência no main então, chama-se um método estático cria um objeto e coloca na lista estática … chama um método para percorrer e pronto ai dar as respostas… Ele quer todos os objetos em uma lista foi isso que eu entendi que o exercício pediu.

[quote=Ziru][quote=War Paz]Não creio que seja isso…

Primeiro, você não pode construir um objeto por métodos, apenas construtores (Isso é meio que lógico)

Segundo, não dá pra usar o modificador “static” em um construtor

E terceiro, se você cria um objeto, você já está criando uma referência para ele na memória. Tenta rever o exercício lá do começo ou posta ele todo aqui[/quote]

Na verdade, alguns objetos em Java só podem ser criados por métodos extáticos de sua classe.

EDIT:

Aki é um exemplo dele.

Connection conn = DriverManager.getConnection(arg0);

Vale lembrar que em algum momento está sendo chamado o construtor da classe criada, seja no próprio método estático, ou em algum outro lugar.