内部类中的问题请高手解答 为什么 java不允许非静态内部类里定义静态成员。否则编译引起错误,求这样设计的原因!用自己的理解解答为什么匿名内部类需要访问外部类的局部变量时,则必须使用final修饰符来修饰外部类的变量,否则系统将报错的原因,求解答! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 内部类是依赖于外部类存在的,所以不允许建立静态成员。你在外围new内部类的实例,是需要外部类实例.new 的形式来实例化的。匿名类的final修饰符,个人认为是为了匿名类的状态不受类外部操作的影响。 但是静态内部类中可以定义静态成员和非静态成员,你说的内部类依赖于外部类存在所以不能定义静态成员,但是静态内部类也是依赖外部类,但是它可以定义静态成员。匿名内部类访问外部类的变量,外部类的变量必须使用final修饰符,而不是你说的:匿名类的final修饰符。我的意思是:为什么你们那个内部类要访问外部类的局部变量时,必须要用final修饰 为什么匿名内部类访问外部类的局部变量时,外部类的局部变量必须使用final修饰符修饰。final修饰只是让变量不可被重新赋值,为什么匿名内部类访问外部类的局部变量,就要让外部类的局部变量使用final修饰 如果内部类里有静态成员,而内部类又是依赖于外部类的。那么java自动回收垃圾时对外部类该如何操作呢?匿名类访问外部变量须在外部变量上加final修饰符,个人觉得是因为考虑到安全吧,不允许匿名类修改外部类的成员变量。个人之见…… 这问题好多人都回答不好,也包括我。楼主可以自己google下,有不少比较靠谱的分析。 但是静态内部类中可以定义静态成员和非静态成员,这自然是可以的。这里就要看你怎么用静态内部类了。静态内部类一般的用法是把他理解成为可以独立与外部类存在的类,他的生命期独立于外部类。如果静态类存在有非静态成员,那要使用非静态成员的时候,必须实例化内部类,也就是之前说的需要外部类实例.new 的形式来实例化的。那就退化成了非静态内部类。 设计的时候,功能要明确,到底是非静态,还是静态。 java就这个地方太难理解--signature-------------------http://www.mowker.com/qkdq.htm Java Swing编程中如何调用mplayer播放器 IE兼容问题 谁能解释一下 这个页面大家用JAVA代码下载下来是乱码吗 有关socket 的问题 j2se可否开发游戏? sqlserver2000的jdbc连接问题!!! java 如何访问 ACCESS 数据库,请给个例子,谢谢 关于TOMCAT的问题,高分求解 如何改变JAVA程序的左上角图标?谢谢 关于Jtable中获取值的方法求解 多线程设置表模型(DefaultTableModel),出现异常
你在外围new内部类的实例,是需要外部类实例.new 的形式来实例化的。匿名类的final修饰符,个人认为是为了匿名类的状态不受类外部操作的影响。
匿名内部类访问外部类的变量,外部类的变量必须使用final修饰符,而不是你说的:匿名类的final修饰符。
我的意思是:为什么你们那个内部类要访问外部类的局部变量时,必须要用final修饰
匿名类访问外部变量须在外部变量上加final修饰符,个人觉得是因为考虑到安全吧,不允许匿名类修改外部类的成员变量。个人之见……
楼主可以自己google下,有不少比较靠谱的分析。
但是静态内部类中可以定义静态成员和非静态成员,这自然是可以的。
这里就要看你怎么用静态内部类了。
静态内部类一般的用法是把他理解成为可以独立与外部类存在的类,他的生命期独立于外部类。
如果静态类存在有非静态成员,那要使用非静态成员的时候,必须实例化内部类,也就是之前说的需要外部类实例.new 的形式来实例化的。那就退化成了非静态内部类。 设计的时候,功能要明确,到底是非静态,还是静态。
http://www.mowker.com/qkdq.htm