java - Java Class2.getClass() 返回错误的类
问题描述
Class1.java
public class Class1 {
public static void main(String[] args) {
System.out.println(new Class2() {}.getClass());
}
}
Class2.java
public Class2 {
}
当我尝试获取班级时,Class2
它会返回班级Class1
。上述代码的输出返回class Class1$1
。我希望它应该返回class Class2$1
。为什么它返回一个完全不同的类?
解决方案
你实际上有一个匿名子类Class2
. 这个
System.out.println(new Class2() {}.getClass());
应该
System.out.println(new Class2().getClass());
而且,正如评论中所指出的,编译器分配给匿名类的名称是一个不应该回复的实现细节。例如,这里
System.out.println(new Class1() {}.getClass());
System.out.println(new Class2() {}.getClass());
System.out.println(new Class2() {}.getClass());
在每种情况下,您都会得到不同的数字。
推荐阅读
- python-3.x - 尝试使用 Python 的 poplib 连接到 Outlook 时出现连接被拒绝错误
- java - Java + Selenium 会话 ID 为空。调用 quit() 后使用 WebDriver
- javascript - 根据用户的输入创建查询
- javascript - 使用javascript比较数组中元素的最佳方法?
- android - 如果我关闭启动它的应用程序,我可以在 Android Studio 中停止服务吗?
- c++ - Magick++ 不读取图像
- python - 将 xarray.plot.line 与颜色图一起使用
- android - 仅当我释放对 RecyclerView 列表的触摸时,才使 ItemTouchHelper 运行 OnMove
- javascript - 上传多个文件时出现 AWS S3 'RequestTimeTooSkewed' 错误
- recursion - C#中父子的分层求和