Estava dando uma estudada e o método forName(parametro) da classe Class é para instanciar a classe passada como parametro?
se por isso os seguintes códigos seriam equivalentes?
Animal a = new Animal();
Class.forName(“Animal”);
qual seria a diferença ou vantagem de usar o Class.forName() ?
dei uma procurada no google mas os exemplos e trechos de código q encontrei o método forName() com um driver de banco como parametro. alguem saberia me dizer se esta utilização mais utilizada para esta método?
Na verdade o Class.forName() você usa para obter uma instância da variável Class relativa aquela classe. Para instancia-la você precisar utiliza o método newInstance() (para chamar o construtor sem parâmetros). Desta forma são equivalentes:
O Class.forName() costuma ser utilizado quando você não conhece a classe que vai ser instanciada em tempo de compilação e somente em tempo de execução. Um exemplo seria um nome de classe configurado em um arquivo XML.
T
thingol
Class.forName, tecnicamente, carrega a classe e chama os métodos de inicialização estática dessa classe; não cria uma instância dessa classe. Esse método retorna um objeto do tipo java.lang.Class.
Para criar uma instãncia, você precisaria pegar o objeto do tipo java.lang.Class que foi retornado por Class.forName, e chamar o método “newInstance”.
Ela é usada de várias formas; por exemplo, você poderia ter um componente Java que implementasse uma determinada interface, cujo nome fosse dado em um arquivo de configuração.
E
ezellis
pera ai que agora não entendo nada…
o que seria um método de inicialização estática? :?:
carregar a classe não seria instancia-la?:
se não fosse pedir muito vcs poderiam me explicar de forma mais simples, pode ser que pra vcs seja um exemplo muito banal, mas pra mim que estou iniciando em java vai ajudar muito. :lol:
L
Leo_def
NO caso o objeto deve conter um construtor nulo? , ou não é preciso porque caso receba parâmetros o método atribui automaticamente valores nulo ou 0?
V
Victor_Gerin
ezellis:
pera ai que agora não entendo nada…
o que seria um método de inicialização estática? :?:
carregar a classe não seria instancia-la?:
se não fosse pedir muito vcs poderiam me explicar de forma mais simples, pode ser que pra vcs seja um exemplo muito banal, mas pra mim que estou iniciando em java vai ajudar muito. :lol:
o java permite a criação de um bloco de código estático ele geralmente é inicializado ao importar a classe ou iniciar o programa (se não me engano), ele não é diferente de outro bloco de código qualquer a sua sintaxe é assim
observe que o bloco estático é inicializado primeiro que o próprio main, se não me engano são esses blocos que são inicializados quando você chama o "Class.forName() "