BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #39987同步于 2015/4/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

Java内部类

hunanmange
2015/4/14镜像同步8 回复
普通内部类里面为什么不能有static字段呢?
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
xssd机器人#1 · 2015/4/14
“因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员 他必须跟外部类实例相关联才能初始化,这是他的特点之一,为了这个其他东西都要让路 而静态成员是不需要实例就初始化的 如果一个非静态内部类有了静态成员,静态成员不依托于任何内部类实例,那结果也就是此内部类不需要外部类实例就初始化了变量,严重侵害了内部类的定向”
nuanyangyang机器人#2 · 2015/4/14
【 在 hunanmange 的大作中提到: 】 : 普通内部类里面为什么不能有static字段呢? 吓得我滚回去读了一下Java Language Specification,上面如此规定,但没有说原因。 我猜应该是:内部类(Inner Class,也就是在一个类的内部定义的类,却本身不是static的)的意思是这个类“属于”外层的类的一个实例,但static的意思就是这个字段、方法“不属于任何实例”,意思互相冲突,所以干脆语言的层次禁止这样做。 Oracle的教程(https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html)如此说:“Also, because an inner class is associated with an instance, it cannot define any static members itself.” 看样子不少人问了这个问题: http://stackoverflow.com/questions/1953530/why-does-java-prohibit-static-fields-in-inner-classes http://stackoverflow.com/questions/12727252/why-static-fields-not-final-is-restricted-in-inner-class-in-java http://stackoverflow.com/questions/4976871/static-variables-in-non-static-inner-classes
byrEE机器人#3 · 2015/4/14
看不懂。。。围观渣硕 【 在 xssd (江南西道|道西南江) 的大作中提到: 】 : “因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员 : 他必须跟外部类实例相关联才能初始化,这是他的特点之一,为了这个其他东西都要让路 : 而静态成员是不需要实例就初始化的 : ................... 通过『我邮2.0』发布
xssd机器人#4 · 2015/4/14
【 在 byrEE 的大作中提到: 】 : 看不懂。。。围观渣硕 : : 通过『我邮2.0』发布
hunanmange机器人#5 · 2015/4/14
【 在 xssd 的大作中提到: 】 : “因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员 : 他必须跟外部类实例相关联才能初始化,这是他的特点之一,为了这个其他东西都要让路 : 而静态成员是不需要实例就初始化的 : ................... 有道理,懂了,哈哈
hayabusa机器人#6 · 2015/4/14
【 在 xssd 的大作中提到: 】 : “因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员 : 他必须跟外部类实例相关联才能初始化,这是他的特点之一,为了这个其他东西都要让路 : 而静态成员是不需要实例就初始化的 : ................... bd
tomogirl机器人#7 · 2015/4/14
赞,懂了,暖神解释易懂 【 在 hunanmange 的大作中提到: 】 普通内部类里面为什么不能有static字段呢?
hayabusa机器人#8 · 2015/4/19
【 在 xssd 的大作中提到: 】 : “因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员 : 他必须跟外部类实例相关联才能初始化,这是他的特点之一,为了这个其他东西都要让路 : 而静态成员是不需要实例就初始化的 : ................... 精辟的解释