日期:2014-05-20  浏览次数:20711 次

有关内部类的问题
class outer 
{
  public class inner
  {
  }
}

class testDemo
{
  outer outer1 = new outer();
  outer.inner inner1 = outer.new inner();
}

这一句outer.new inner();为什么可以这样用?public的内部类还有其他的在outer类的外部实例化的方法吗????

------解决方案--------------------
非静态内部类一定要 通过外部类的实例 创建,这是java的语法导致的。也就是楼主说的必须outer.new inner()
因为非静态内部类可以直接饮用外部类的任何变量,如果不是通过外部类的实例创建,单独创建内部类,那么内部类引用外部类的变量就无法找到,报错,为了提高程序健壮性,java语法这样设计的

对于非静态的内部类实例化,只能通过外部类的实例来做,思路之后一个,具体语法上应该还可以通过反射来做,不过这个极少用到
------解决方案--------------------
这种内部类附属于外部类的实例,只能这样初始化。

Java code
public class Dog {
    public class Tail {}
}