java中枚举的用法_java的枚举[通俗易懂]

java中枚举的用法_java的枚举[通俗易懂]Java中有很多时候都用到了枚举,但是之前都没有去好好理解这个类,所以准备写一下关于枚举类的用法以及使用场景。首先,介绍一下枚举的基本知识吧,enum无法继承其他类,因为它已经继承了java.lang.Enum。可以实现其他接口。然后使用enum需要构造方法。而enum里面的构造方法默认是priv

大家好,欢迎来到IT知识分享网。

  Java中有很多时候都用到了枚举,但是之前都没有去好好理解这个类,所以准备写一下关于枚举类的用法以及使用场景。

  首先,介绍一下枚举的基本知识吧,enum无法继承其他类,因为它已经继承了java.lang.Enum。可以实现其他接口。然后使用enum需要构造方法。而enum里面的构造方法默认是private,因此,你无法再外部new一个enum类。

public enum TestEnum {

    NOMARL(1,"成功"),
    FAIL(2,"失败");

    private int code;
    private String message;

    TestEnum(int code,String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return this.code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return this.message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
public static void main(String[] args) throws InterruptedException, ParseException {
        System.out.println(TestEnum.NOMARL.getMessage());
    }

  上面就是枚举的使用,如果你在TestEnum的构造方法中打个断点,调试你会发现,当使用TestEnum.NOMARL会调用构造方法,将code设置为1,message设置为“成功”,然后调用getMessage()就会输出“成功”了。

  枚举的使用算是比较简单了。下面分析一下使用场景以及使用枚举的好处。

  当我们需要一些有穷对象的集合的时候,我们可以使用枚举。比如通常JavaWeb接口返回数据的code,比如参数错误,操作成功,操作失败等等。如果直接在代码里面写1,2,3这种去标识的话,会让代码看起来很难懂。这个时候我们可以使用枚举。

  不过这种情况我们完全可以新建一个类,再里面写常量用来定义各种code,同样可以在外部使用。那么到底这两种方式谁更好呢?在网上查了几篇文章,基本说的是以下三点好处。

  1. 可读性高,更容易理解

这点我并不认同,因为枚举或者常量都需要名字来标识,比如上面的NOMARL,

public class ResponseCode {
public static final int NOMARL = 1;
}

使用这种写法也可以达到同样的效果。外部调用同样只需要ResponseCode.NOMARL就好了。

  2. 类型安全

这个的确是其中一种好处,比如setCode()方法。我们当然可以使用常量。但是同样对于不知道的人来说,他完全可以使用setCode(-1)这种写法,并且不会报错。但是它可能并不合理。如果我们使用枚举的话,就必须去枚举类里面添加上你想要的code,然后才能调用setCode()方法。

  3. 耦合性高,扩展性好

这点我也不是很认同,因为用常量和枚举,如果需要改动,我们一样直用修改枚举或者常量里面的内容就好了,外部代码的引用也会随之更改。

  另外再说一点,当我们的常量的类型是Map.Set这种数据结构的时候,我们应该考虑使用EnumMap或者EnumSet,因为他们的性能更高。

  

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29130.html

(0)
上一篇 2023-09-28 19:00
下一篇 2023-09-29 10:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信