Como obter um objeto

Utilizando-se da classe Reflection como eu posso obter a, a instancia de uma determinda classe.

String valor = new String();

Então no caso o objeto desta declaração seria valor. Como obter isto por reflection.

Vitor Hugo Brito de Oliveira

Você quer criar um objeto por reflection, é isso?

Class.newInstance cria um objeto se sua classe tiver um construtor sem parâmetros. Se quiser criar um objeto usando um construtor com parâmetros, escolha o construtor adequado e chame-o.

Um exemplo do uso de java.lang.reflect.Constructor.

import java.lang.reflect.*;

class Exemplo {
    private int campo1;
    private String campo2;
    public Exemplo (int param1, String param2) {
        System.out.println ("Chamado o construtor da classe Exemplo, com os parâmetros: " + param1 + ", " + param2);
        campo1 = param1;
        campo2 = param2;
    }
    public String toString () {
        return "[" + campo1 + "," + campo2 + "]";
    }
}

class TesteConstrutor {
    public static void main(String[] args) throws 
    ClassNotFoundException, NoSuchMethodException, InstantiationException, 
    IllegalAccessException, InvocationTargetException {
        Class klass = Class.forName ("Exemplo");
        Constructor constr = klass.getConstructor (new Class[]{int.class, String.class});
        // a linha a seguir deve imprimir 
        // "Chamado o construtor da classe Exemplo, com os parâmetros: 20, Expecto patronum"
        Object obj = constr.newInstance (new Object[] {new Integer (20), "Expecto patronum"});
        System.out.println (obj.getClass().getName()); // deve imprimir "Exemplo"
        System.out.println (obj.toString()); // deve imprimir "[20,Expecto patronum]"
    }
}

Eu quero obter o nome do objeto.

Objetos não têm nome; a classe ao qual pertence o objeto é que tem nome. Por exemplo, eu imprimi o nome do tal objeto que criei por reflection usando objeto.getClass().getName().

Variáveis têm nome, mas seu nome normalmente é “perdido” em tempo de execução, se for uma variável local.

Eu disse em algum post anterior, que uma variável é uma caixinha e um objeto é o que você põe dentro da caixinha.