Estou com uma dúvida sobre essa classe… gostaria de saber se usando a classe Class posso abrir um jar e instanciar objetos da classe que esta dentro do jar, e chamar os métodos desse objeto… Não posso fazer isso usando a classe ClassLoader… Alguem pode me dar uma luz? estou totalmente perdido qualquer ajuda é valida. vou estar estudando enquanto isso qualquer coisa que eu achar posto aqui!
Ola
A classe java.lang.Class é ótima para usar atraves de reflection, acho que é isto que vc tá estudando, atraves dela vc consegue descobrir os metodos da classe e estaticos, campos e propriedades da classe, dentre outras informações… muito boa mesmo.
Em relação a sua pergunta a resposta é sim, mas só se vc tiver o jar em seu classpath e se souber previamente o path da classe.
Meu problema aqui esta sendo executar um .jar via código ME… eu pensei em usar a class Class já que o Me não tem o método exec da classe RunTime… Mas primeiro eu precisava aprender via SE. Você tem algum exemplo de como descobrir essas propriedades de uma classe usando a classe Class? Se tiver tem como me mandar um link ou postar aqui?
Ola,
para recuperar as propriedades de uma classe use o metodo :
Field[] getDeclaredFields()
e para recuperar campos estaticos use:
Field[] getFields()
por exemplo:
import java.lang.reflect.Field;
public class Reflection {
public static String TESTE;
private String nome;
private int idade;
public static void main(String[] args){
Class c = Reflection.class;
Field[] properties = c.getDeclaredFields();
for(Field field : properties){
System.out.println("properties = "+field.getType()+" "+field.getName());
}
properties = c.getFields();
for(Field field : properties){
System.out.println("field = "+field.getType()+" "+field.getName());
}
}
}