Java 枚举类型中受保护的变量是啥意思? [复制]

Posted

技术标签:

【中文标题】Java 枚举类型中受保护的变量是啥意思? [复制]【英文标题】:Java what does a protected variable mean in enum type? [duplicate]Java 枚举类型中受保护的变量是什么意思? [复制] 【发布时间】:2018-08-26 20:44:03 【问题描述】:

在 Java 9 中,我可以编写如下代码:

enum Abc 
    A, B, C;
    static protected int foo = 4; // what is the purpose of the protected variables like this in enum?

我认为这没有意义,因为我们不能继承或实现枚举。

编辑:这个问题和Why are protected members allowed in final java classes?一样

【问题讨论】:

Java 8 也允许这样做。 如果我没记错的话,Protected 还允许访问包。不回答你的问题,只是说。 @MadPhysicist 它正好回答了这个问题。 这个问题不能重复。请删除此标记。我在问枚举类型。 @Makoto 从 Java 5 开始就有可能,当时引入了 enum 类型。忽略这是一个enum 的事实,您可以编写具有过时的protected 修饰符的/* not public */ class Abc static protected int foo = 4; ,因为Java 1.0... 【参考方案1】:

这就是它的含义:只能从同一个包中的子类或类访问。你是对的,因为你不能继承这个类,它实际上与包私有字段没有任何不同。

【讨论】:

对变量使用protected 修饰符是正确的选择吗?也许没有人在enum 中将这个修饰符用于变量。对吗? 如果它做你想做的,这是一个正确的选择。 :-) 我同意在风格上,包私有可能更好。

以上是关于Java 枚举类型中受保护的变量是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

enum在java中是啥意思

Scala 类定义中受保护关键字的含义是啥?

c#中受保护和私有保护有啥区别? [复制]

java中的枚举是啥意思?

java中的枚举是啥意思?

python中受保护变量和公共变量有啥区别