最近在仔细看这本书
- 中文版第四版 191 页,讲的内部类,有这么一句话
“如果想从外部类的非静态方法之外的的任意位置创建某个内部类的对象,那么必须像在 main()方法那样,具体指明这个对象的类型: OuterClassName.InnerClassName ”
这句话是翻译错误了吗,还是我理解有误。非静态方法之外的任意位置是指“静态方法内”吗?如果是静态方法内我试了不用加 OutClassName 这个前缀。非静态方法明显也不用,这是怎么回事?
- 第 198 页
public class Parcel9{
public Destination destination(final String dest){
return new Destination(){
private String bebel = dest;
public String readLabel(){
return label;
}
};
}
public static void main(String[] args){
Parcel9 p = new Parcel9();
Destination d = p.destination("Tasmania");
}
}
“如果定义一个匿名内部类,并且希望它使用一个在其外部定义的对象, 那么编译器器参数引用是 final 的”
199 页
“下面是带实例初始化的 “ Parcel ”。注意 destination() 的参数必须是 final 的,因为它们是在匿名内部类使用 ”
public class Parcel10{
public Destination destination(final String dest, final float price){
return new Destination(){
private int cost;
{
cost = Math.round(price);
if(cost > 100){
System.out.println("Over budget");
}
}
private String label = dest;
public String readLabel(){
return label;
}
};
}
public static void main(String[] args){
Parcel10 p = new Parcel10();
Destination d = p.destination("Tasmania", 101.395F);
}
}
这上面的 final 我试了都可以不用加,是 Java 后面更新了所以不用了吗?
各位看看,谢谢大家