加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Enum:我刚做了一些不需要的事吗?

发布时间:2020-12-14 19:36:10 所属栏目:Java 来源:网络整理
导读:我有一个枚举类,它有几个常量,我想添加一些静态值FOCUSED,表示哪个枚举值有焦点… 我找到了一个方法: package messagesystem;/** * * @author Frank */public enum MessageType { ALL,GENERAL,SEND,RECEIVE,LOG,EXCEPTION,DEBUG,PM; public final static Me
我有一个枚举类,它有几个常量,我想添加一些静态值FOCUSED,表示哪个枚举值有焦点…

我找到了一个方法:

package messagesystem;

/**
 *
 * @author Frank
 */
public enum MessageType {
    ALL,GENERAL,SEND,RECEIVE,LOG,EXCEPTION,DEBUG,PM;

    public final static MessageType FOCUSED = GENERAL;

    private final String value;

    MessageType() {
        String firstLetter = name().substring(0,1);
        String otherLetters = name().substring(1,name().length());
        this.value = firstLetter.toUpperCase() + otherLetters.toLowerCase();
    }

    @Override
    public String toString() {
        return value;
    }
}

但是,现在我想知道:我是否只是搞乱了枚举类?因为我不希望在指定消息类型时可以选择FOCUSED,但是处理MessageType枚举的类应该能够确定FOCUSED值…这样我就不需要在每个类中对其进行硬化.

任何想法都表示赞赏.

编辑:虽然行为正常.
此代码提供了预期的输出:

this.focused = MessageType.FOCUSED.toString();
    System.out.println(focused);

输出为“常规”.

解决方法

FOCUSED只是GENERAL的别名.它不会出现在枚举的值()中,如果某些客户端代码使用FOCUSED,它实际上将使用GENERAL,因为两个变量都引用相同的枚举值.所以不,我不认为你搞砸了.

为了减少混淆,也许你应该使focused()成为一个静态方法,它返回GENERAL.如果您确定焦点类型是另一个类型,这也可以避免重新编译客户端代码的需要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读