我读过关于class fromal parameters的问题,然后问题出现,为什么下面的代码是不合格的?Java中的内部类构造
类A
:
package org.gradle;
public class A extends B.Inner{
public A(B s){
s.super(new B()); //error
s.super(); //OK
}
}
类B
:
package org.gradle;
public class B{
public class Inner{
}
}
什么说的关键部分是:
非私有内部成员类的构造函数隐 声明,作为第一个形式参数,一个变量代表 立即封闭类
这样的情况下,我希望,除了默认的构造函数,我们应该有一个具有以下签名的构造函数:
Inner(B b);
为什么不呢?
谢谢,但它不是很清楚为什么我不能明确地调用该构造函数,如http://ideone.com/igXgCM? May JLS提供了我失去的限制吗? – 2014-11-04 07:21:43
@ St.Antario:这不是内部类的工作方式 - 你会使用'new B()。new Inner()'来代替。你不打算把它看作是一个额外的参数 - 你打算把它看作是用来构造内部类实例的封闭类的实例。 – 2014-11-04 07:22:59
JLS是否明确指出? – 2014-11-04 07:26:51