关于枚举的Class 表示

安卓笨笨鸟 2015-07-22 05:55:09
如果把Java的枚举类型理解为包含自身类型的静态字段的类 那这些字段本身又是一个枚举类型的对象,它又有同样多的枚举类型字段,这样不是无穷多的字段了吗
...全文
168 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
飏飏一蝶 2015-07-22
  • 打赏
  • 举报
回复
引用 6 楼 a591193965 的回复:
[quote=引用 4 楼 qq118194716 的回复:] [quote=引用 2 楼 a591193965 的回复:] 不是呀 ,你看 如果是这样定义 class T{ pulbic static final T t1; public static final T t2; } t1 和t2 不也是一个T类型的吗 它里面也有t1,t2.以此推下去。。。
这种问题我想过,只存在于 class T{ pulbic final T t1; public final T t2; } 这种情况下。对象初始化的时候,静态区域是公用的,就是说静态变量只有一个,多次初始化也只有第一次存在静态变量的初始化情况, 而非静态变量会被初始化,那么t1,t2被初始化会引起无限嵌套的初始化,这种情况肯定是不允许的 这就是为什么必须static才可以存在的原因 [/quote] 有点明白了,如果第一次对t1和t2初始化的时候,t1和t2 指向一片内存区域,由于声明为static 当t1和t2 递归初始化时,还是指向同一片区域 ,不知道这么想对不对。。[/quote] NONONO,你可把类内部的静态变量简单的看做存储对象的全局变量,放哪儿都可以,放其他类里也是可以的,只是因为java没有全局变量,所以必须得放到类的内部。别被同名给迷惑了~
安卓笨笨鸟 2015-07-22
  • 打赏
  • 举报
回复
引用 3 楼 shijing266 的回复:
想那么多干嘛,至少他能一层层下去,如果你要用 就 T.t1.t1.....一路点下去就是 ,反正静态变量跟类一起存在的
想的多,收获得就多一点。新手想基础牢固一点。。。
安卓笨笨鸟 2015-07-22
  • 打赏
  • 举报
回复
引用 4 楼 qq118194716 的回复:
[quote=引用 2 楼 a591193965 的回复:] 不是呀 ,你看 如果是这样定义 class T{ pulbic static final T t1; public static final T t2; } t1 和t2 不也是一个T类型的吗 它里面也有t1,t2.以此推下去。。。
这种问题我想过,只存在于 class T{ pulbic final T t1; public final T t2; } 这种情况下。对象初始化的时候,静态区域是公用的,就是说静态变量只有一个,多次初始化也只有第一次存在静态变量的初始化情况, 而非静态变量会被初始化,那么t1,t2被初始化会引起无限嵌套的初始化,这种情况肯定是不允许的 这就是为什么必须static才可以存在的原因 [/quote] 有点明白了,如果第一次对t1和t2初始化的时候,t1和t2 指向一片内存区域,由于声明为static 当t1和t2 递归初始化时,还是指向同一片区域 ,不知道这么想对不对。。
董小姐_123 2015-07-22
  • 打赏
  • 举报
回复
枚举定义::是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.并不是每一个值都具备枚举范围的每一个被列出来的值范围额!
飏飏一蝶 2015-07-22
  • 打赏
  • 举报
回复
引用 2 楼 a591193965 的回复:
不是呀 ,你看 如果是这样定义 class T{ pulbic static final T t1; public static final T t2; } t1 和t2 不也是一个T类型的吗 它里面也有t1,t2.以此推下去。。。
这种问题我想过,只存在于 class T{ pulbic final T t1; public final T t2; } 这种情况下。对象初始化的时候,静态区域是公用的,就是说静态变量只有一个,多次初始化也只有第一次存在静态变量的初始化情况, 而非静态变量会被初始化,那么t1,t2被初始化会引起无限嵌套的初始化,这种情况肯定是不允许的 这就是为什么必须static才可以存在的原因
  • 打赏
  • 举报
回复
想那么多干嘛,至少他能一层层下去,如果你要用 就 T.t1.t1.....一路点下去就是 ,反正静态变量跟类一起存在的
安卓笨笨鸟 2015-07-22
  • 打赏
  • 举报
回复
不是呀 ,你看 如果是这样定义 class T{ pulbic static final T t1; public static final T t2; } t1 和t2 不也是一个T类型的吗 它里面也有t1,t2.以此推下去。。。
飏飏一蝶 2015-07-22
  • 打赏
  • 举报
回复
你想说的是无限递归吧 静态字段不存在这个问题 一个静态字段只引用一个枚举类对象

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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