非静态内部类为什么不能定义静态变量

rzhzhz 2010-11-21 02:38:15
非静态内部类为什么不能定义静态变量?
但为什么 static final 确又行呢?


public class Outer{
class Inner{
public static int i = 0;//报错
public static final int j = 0;//通过
}
}
...全文
326 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ETCentury 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hanrivergo 的回复:]

因为内部类是非静态的,除了要依靠外部类实例外,还要依赖内部类实例,而静态变量是不需要构建类实例的,两者是相矛盾的,而final类型的变量可以离开类实例存活一段时间的。
[/Quote]

这个解释的很是简单易懂~!
hanRivergo 2010-11-21
  • 打赏
  • 举报
回复
因为内部类是非静态的,除了要依靠外部类实例外,还要依赖内部类实例,而静态变量是不需要构建类实例的,两者是相矛盾的,而final类型的变量可以离开类实例存活一段时间的。
javagongcheng 2010-11-21
  • 打赏
  • 举报
回复
学习了..
rzhzhz 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 magicluo 的回复:]
看看这篇blog: http://blog.csdn.net/isiwnlg/archive/2010/08/14/5812818.aspx
[/Quote]
我看过了,我总觉得这种解释有点牵强……
你给我看的那篇英文文档,本人英语很菜,看不太懂
magicluo 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rzhzhz 的回复:]
引用 1 楼 pang68599 的回复:
内部类中不能有静态变量,但是可以由静……

为什么不能有静态变量呢?
[/Quote]

看看这篇blog: http://blog.csdn.net/isiwnlg/archive/2010/08/14/5812818.aspx
genguyige 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 magicluo 的回复:]

static final是编译期常量,类加载之前就已经分配内存。
[/Quote]

正解 static类型是类变量~~
magicluo 2010-11-21
  • 打赏
  • 举报
回复
static final是编译期常量,类加载之前就已经分配内存。
magicluo 2010-11-21
  • 打赏
  • 举报
回复
static final 定义后就是一个静态常量了

具体参考:http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.1.3

rzhzhz 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pang68599 的回复:]
内部类中不能有静态变量,但是可以由静……
[/Quote]
为什么不能有静态变量呢?
朽木可雕 2010-11-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 rzhzhz 的回复:]
非静态变量为什么不能定义静态变量?
但为什么 static final 确又行呢?


Java code

public class Outer{
class Inner{
public static int i = 0;//报错
public static final int j = 0……
[/Quote]

内部类中不能有静态变量,但是可以由静态常量

62,614

社区成员

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

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