Java编程思想-内部类问题
Java编程思想创建内部类(P191)里面有这样一句话,“如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须想在main()方法中那样,具体地指明这个对象的类型:OutClassName.InnerClassName”。这句话该怎么理解?
是该理解为:在外部类中,静态方法中创建内部类的对象要指明类型OutClassName.InnerClassName,非静态方法中创建内部类的对象指明类型InnerClassName吗?但是示例代码中静态方法main()中创建内部类对象c和d时去掉OuterClassName也可以编译运行,求解释!
//: innerclasses/Parcel2.java// Returning a reference to an inner class.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(); // Defining references to inner classes: Parcel2.Contents c = q.contents(); Parcel2.Destination d = q.to("Borneo"); } } /* Output:Tasmania*///:~//: innerclasses/Parcel2.java// Returning a reference to an inner class.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(); // Defining references to inner classes: Contents c = q.contents(); Destination d = q.to("Borneo"); } } /* Output:Tasmania*///:~