作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下代码
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/
我是一名优秀的程序员,十分优秀!