gpt4 book ai didi

java - 如何访问与不同类的方法本地内部类同名的类

转载 作者:行者123 更新时间:2023-12-01 05:55:41 25 4
gpt4 key购买 nike

考虑以下代码

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@____
}
}

A类和B类不在任何包内,如何在方法局部内部类创建后在main()中创建外部类A的对象。换句话说,如何创建外部类 A 的对象“a2”?

我通过将这些类放在一个包中来检查这一点,并且我能够使用完全限定名称创建外部类 A 的对象。但是,当它们不在任何包内时,找不到执行相同操作的方法。

最佳答案

您可以使用 Class.forName() 加载您想要实例化的类:

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@___
}
}

这是有效的,因为 B.main() 中的本地类 A 与在 同一级别上声明的完全限定域名不同B:

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

我不得不使用 Object 作为 a3 的类型,因为无法在 中引用外部 A main() 一旦声明了本地类 A

关于java - 如何访问与不同类的方法本地内部类同名的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54781062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com