¿Cómo acceder a una clase que tienen el mismo nombre que la clase Método interior local de una clase diferente

Nikunj Gupta:

Considere el siguiente código

class A{}
class B{
    void main(){
        A a1=new A();
        class A{}
        A a2=new A();
        System.out.println(a1); // A@___
        System.out.println(a2); // B$1A@____
    }
}

La clase A y clase B no son dentro de cualquier paquete, ¿Cómo puedo crear el objeto de la clase A exterior dentro de main () después de crear la clase interna local de método. En otras palabras, ¿cómo puedo crear el objeto "a2", un objeto de la clase A exterior?

Comprobé esto poniendo estas clases en un paquete, y yo era capaz de crear el objeto de la clase A externa utilizando el nombre completo. Sin embargo, no pudo encontrar una manera de hacer lo mismo cuando no están dentro de cualquier paquete.

Lino:

Se puede utilizar Class.forName()para cargar la clase que le gustaría crear una instancia de:

class A {}

class B {
     public static void main(String[] args) throws Exception {
         A a1 = new A();
         class A {}
         A a2 = new A();
         Class<?> clazz = Class.forName("A");
         Object a3 = clazz.getDeclaredConstructor().newInstance();

         System.out.println(a1); // A@___
         System.out.println(a2); // B$1A@____  
         System.out.println(a3); // A@___
     }
}

Estos trabajos, como la clase local Aen B.main()tiene un nombre de dominio completo diferente a la declarada en el mismo nivel como B:

System.out.println(a1.getClass()); // class A
System.out.println(a2.getClass()); // class B$1A
System.out.println(a3.getClass()); // class A

Yo he tenido que usar Objectcomo el tipo de a3porque no hay manera de hacer referencia al exterior Aen el interior main()una vez que la clase local Aha sido declarada.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=225078&siteId=1
Recomendado
Clasificación