关于反射机制中 Class.getConstructor()的疑问

XinSzeto 2011-02-17 01:11:52
中文API文档解释:
返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。parameterTypes 参数是 Class 对象的一个数组,这些 Class 对象按声明顺序标识构造方法的形参类型。 如果此 Class 对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。

官方文档解释(局部):
* If this <code>Class</code> object represents an inner class
* declared in a non-static context, the formal parameter types
* include the explicit enclosing instance as the first parameter.

我问题是,红色那部分怎么理解, 谁可以帮忙举个例子?
...全文
530 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
XinSzeto 2011-02-17
  • 打赏
  • 举报
回复
回 1、2楼。
你的例子我看明白了, 你举的是内部类的实例化。

但是,对于我提到的那问题,红色字体那部分。。我还是疑惑。。
humanity 2011-02-17
  • 打赏
  • 举报
回复
以前 Thinking in Java 第一版中介绍了如何继承另一个类的里面的一个非 static 内部类,拿这样的一个继承的子类如何 new 一个对象。在那节中讲了这个怪异的内部类。

不知道后面新版本的 Thinking in Java 是不是还包括这一节。
humanity 2011-02-17
  • 打赏
  • 举报
回复
非 static 内部类构造时隐含地传递了包含了它的外部类的实例的引用,这个由编译器生成的吧,写代码时没有明确写这个参数。

如:

class Outer {
class Inner {

}

public static void main(String[] args) {
Outer parent = new Outer();
Inner child = parent.new Inner(); // 这个写法本身就怪异,编译器可能隐含地对它进行额外处理,并它这个 parent 当成一个参数传递给了 Inner 的构造方法,好像 C++ 里面也有类似地把隐含地传递第一个参数的情况。概念上类似。
}
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧