java内部类

Arsuf 2015-10-18 03:59:08
Java不允许在非静态内部类里面定义静态成员。下面的程序显示了非静态内部类里包含静态成员将引起编译错误。
public class InnerNoStatic {
private class InnerClass{
static{
System.out.println("=========");
}
private static int intProp;
private static void test(){}
}
}

为什么不允许在非静态内部类里面定义静态成员?求大神解释一下
...全文
198 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arsuf 2015-10-19
  • 打赏
  • 举报
回复
为什么在静态方法、静态初始化块或者静态变量的声明和初始化中部允许使用类型形参? 例如: public class R<T> { //下面代码错误,不能在静态变量声明中使用类型形参 static T info; T age; public void foo(T msg){ } //下面代码错误,不能在静态方法声明中使用类型形参 public static void foo(T msg){ } }
飏飏一蝶 2015-10-18
  • 打赏
  • 举报
回复
虚拟机加载:加载类---所有静态成员初始化---生成对象,初始化非静态成员 new A( ).new B( ) java虚拟机要求所有静态变量创建必须在对象创建前完成 而非静态内部类依附于外部类对象 (你可以把非静态内部类看成是一个普通的非静态成员,是不是要等类生成对象后才有这个非静态成员) 其内部类的加载必须在外部类对象创建之后才能完成 如果内部类有静态变量就违背了这个原则
渔舟唱晚ノ 2015-10-18
  • 打赏
  • 举报
回复
mark 同问,求详细解答

62,614

社区成员

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

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