Olá pessoal!
Desenvolvo em Delphi e estou aprendendo java. Baixei algumas apostilas da Caelum e vi alguns exemplos conforme abaixo:
public class ConjuntoEspalhamento {
private ArrayList<LinkedList> tabela = new ArrayList<LinkedList>();
public [b]ConjuntoEspalhamento/b{
for (int i = 0;i<26;i++){
LinkedList lista = new LinkedList();
tabela.add(lista);
}
}
}
Não entendi essa declaração. É possível dar nomes a métodos iguais ao nome da classe?
Outra questão: Quando instancio a classe(ConjuntoEspalhamento conjunto = new ConjuntoEspalhamento()) não consigo enxergar o método ConjuntoEspalhamento.
Alguém poderia nos dar uma luz?
Obrigado.
Na veradade isto é um construtor.
Benvindo ao java.
Primeiro, temos algumas “boas práticas” no guj, uma delas é a formatação de código na postagem.
Basta colocar o código entre as tags [code]
Java permite a declaração de métodos com mesmo nome da Classe, eles se chamam construtores e podem receber de 0 a n parâmetros.
Não consegue pois o está chamando quando instancia a classe.
Boa tarde Rbcastro…
Vejo que é novo no forum então sempre que for postar algum código procure colocar entre as tags [ code ], assim fica mais fácil a interpretação de quem vai lhe ajudar.
Isso que você está pensando ser um método na verdade é um construtor, e realmente você nunca vai encontrá-lo através de uma instância de ConjuntoEspalhamento.
Para você transformar isso em um método você deve inserir um retorno. Algo parecido com isso :
public class ConjuntoEspalhamento {
private ArrayList<LinkedList<String>> tabela = new ArrayList<LinkedList<String>>();
public [b] void [/b] ConjuntoEspalhamento(){
for (int i = 0;i<26;i++){
LinkedList<String> lista = new LinkedList<String>();
tabela.add(lista);
}
}
}
Não é legal ter um método com o mesmo nome da classe para exatamente não ficar confundindo se é ou não é um método, se é um construtor e tals…
Procure estudar sobre construtores, vai lhe ajudar muito nessa fase dos estudos.
Nossa, estou impressionado com a rapidez nas respostas.
Obrigado amigos.
Desculpa pessoal mais eu não entendi o lance de boas práticas.
Como assim: Basta colocar o código entre as tags [code]?
Poderíam me dar um exemplo?
Obrigado.
public class ConjuntoEspalhamento {
private ArrayList<LinkedList<String>> tabela = new ArrayList<LinkedList<String>>();
public ConjuntoEspalhamento(){
for (int i = 0;i<26;i++){
LinkedList<String> lista = new LinkedList<String>();
tabela.add(lista);
}
}
}
Entendi pessoal!
Pesso desculpas novamente.
Obrigado.
sem problemas rbcastro,
Se sua dúvida foi solucionada, altere o assunto e coloque [RESOLVIDO]
para que as pessoas saibam que o assunto está encerrado.
Seja bem vindo ao GUJ.
Somente um parêntese.
Como várias coisas que foram copiadas do C++, uma delas é particularmente confusa, que é o construtor ser representado por algo que parece um método, mas cujo nome é exatamente o mesmo da classe. Pior ainda, no Java é possível ter ao mesmo tempo um método normal e um construtor que têm o mesmo nome - isso é um requinte de crueldade que não existe no C++. Portanto, muita gente se estrepa com o seguinte código:
class Classe {
/** Construtor - veja que tem o mesmo nome da classe, mas não tem um tipo de retorno */
public Classe() { }
/** Método público - isso é um requinte de crueldade! Note que tem um tipo de retorno, que é "void". */
public void Classe() { }
}