刚刚发现这一点,同时阅读 eclipse JDT 的文档:
IMethodBinding.getParameterTypes()
:. 。 。 注意:结果不包括内部类仿真引入的合成参数。
我在JLS中找不到任何对内部类仿真的引用......任何人都知道这个仿真是什么?举一个例子,也会有所帮助。 :)
答案 0 :(得分:4)
我认为Eclipse文档编写器的术语有点松散。就JLS而言,内部类是内部类,不需要模拟。
然而,内部类通过典型的JVM实现实现的方式有点棘手,这就是合成构造函数参数进入等式的地方。发生了什么是JVM实现类是否相同,无论它们是否嵌套。没有用于引用封闭类中的变量的特殊字节码,因此编译器会生成通过合成属性获取它们的代码。
可以在最初的Sun Java 1.1 Inner Classes Specification.
中找到更多详细信息答案 1 :(得分:2)
我怀疑“内部类仿真”是指编译器如何为内部类生成字节代码 虚拟机级别没有内部类支持(至少在它们被引入时)。编译内部类时,编译器必须为 normal 类生成字节代码。添加对外部类实例的引用,例如:
public class Outer {
class Inner {
@Override
public String toString() {
return "Inner";
}
}
}
将Inner类编译为类似于:
class Outer$Inner {
final Outer this$0; // the instance of the outer class
Outer$Inner(Outer outer) {
super();
this$0 = outer;
}
public String toString() {
return "Inner";
}
}