Eu preciso, em um framework que estou fazendo, ler o nome de um método e sua lista de parâmetros de um arquivo, para poder invoca-lo.
Estou com problemas pois não sei como criar uma instância de Class que representa um array de um tipo objetos para localizar o método que o utiliza como parâmetro.
Eu achei muita coisa falando sobre como criar arrays utilizando reflexão, mas como eu crio uma instância de Class representando um array de um determinado tipo?
Eu preciso, em um framework que estou fazendo, ler o nome de um método e sua lista de parâmetros de um arquivo, para poder invoca-lo.
Estou com problemas pois não sei como criar uma instância de Class que representa um array de um tipo objetos para localizar o método que o utiliza como parâmetro.
Eu achei muita coisa falando sobre como criar arrays utilizando reflexão, mas como eu crio uma instância de Class representando um array de um determinado tipo?
[/quote]
Você não cria. Por exemplo o java.lang.reflect.Array.newInstance(Class<?> componentType, int… dimensions)
cria um array do tipo componentType e retorna um objecto (que é uma array). Só que a classe desse objecto não tem nenhuma informação de componentType.
É que eu não estou querendo criar um array, mas estou querendo o objeto Class que o representa para poder comparar com os argumentos de um método que recebe um array como parâmetro. Exemplo:
String.class; // Obtém a classe
Class.forName("java.lang.String"); //Obtém a classe
String[].class // Obtém a classe do array
Class.forName("java.lang.String[]"); // Dá pau!!!
Class.forName("[Ljava.lang.String"); // Dá pau!!!
Eu queria obter o mesmo resultado de String[].class mas sem conhecer a classe em tempo de compilação, ou seja, através de uma String…
Minha situação é a seguinte: eu leio de um arquivo de configurações o método e os tipos de seus parâmetros, para eu dar um “getMethod()” na classe. O problema é que se o tipo for um array eu não sei como criar uma instância de Class para representa-lo.
Alysson tu podia descrever o que cada uma das strings significa, bem como seu comandos…
ex.
public class TesteMain { //declara uma nova classe. :shock: