关于《Thinking in JAVA》对内部类类型指定方式的疑问

heminjia888 2013-10-27 03:54:43
先说明一个类名指定方式的问题。开门见山上代码!(以注释为重,多余代码忽略)
public class Parcel2 {
class Contents {//内部类
private int i = 11;
public int value() { return i; }
}
class Destination {//内部类
private String label;
Destination(String whereTo) {
label = whereTo;
}
String readLabel() { return label; }
}
public Destination to(String s) {
return new Destination(s);
}
public Contents contents() {
return new Contents();
}
public void ship(String dest) {//在非静态方法中只需要写出内部类名便可指定其类型
Contents c = contents();
Destination d = to(dest);
System.out.println(d.readLabel());
}
public static void main(String[] args) {
Parcel2 p = new Parcel2();
p.ship("Tasmania");
Parcel2 q = new Parcel2();
Parcel2.Contents c = q.contents();
Parcel2.Destination d = q.to("Borneo");
}
}

我的疑问是:在eclipse上,将main函数中Parcel2.Contents c = q.contents();改为.Contents c = q.contents();并不会报错。这和书上说的不一样啊。书上说必须指定外部类的类名。并且在外部类的静态和非静态方法中都可以只使用内部类名来指定类型。
...全文
111 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
heminjia888 2013-10-27
  • 打赏
  • 举报
回复
试了一下,在Parcel2外写的确是必须加外部类名。谢谢! 不过书上那句话有问题吧!!
失落夏天 2013-10-27
  • 打赏
  • 举报
回复
你有本事你别在Parcel2类里面写。。 你在别的类里面这么写试试。。。

62,620

社区成员

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

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