有关内部类的问题
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 {}
}