最近在仔细看这本书
“如果想从外部类的非静态方法之外的的任意位置创建某个内部类的对象,那么必须像在 main()方法那样,具体指明这个对象的类型: OuterClassName.InnerClassName ”
这句话是翻译错误了吗,还是我理解有误。非静态方法之外的任意位置是指“静态方法内”吗?如果是静态方法内我试了不用加 OutClassName 这个前缀。非静态方法明显也不用,这是怎么回事?
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 后面更新了所以不用了吗?
各位看看,谢谢大家
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.