资讯专栏INFORMATION COLUMN

JavaAPI学习——java.lang(三)

ranwu / 2646人阅读

摘要:中的枚举是一个类,所以枚举也可一后构造函数和其他的方法只是枚举继承了类,所以它不能再继承其它的类。如果给每个枚举值指定属性,则必须给枚举类提供枚举值属性对应数据类型的构造方法。红色蓝色白色运行的结果为蓝色

二、类 1、Enum 枚举

java 语言所有枚举类型的公共类;

枚举用来替换使用常量表示列入颜色、方式、类别等数量有限,形式离散有表示明确的量;

枚举是类型安全的,超出枚举类型的返回,将会发生编译时错误;

例:

使用常量来表示颜色:

public class Entity{
    public static final int red = 1;
    public static final int white = 2;
    public static final int blue = 3;
    private int id;
    private int color;
    
    public Entity(int id, int color){
        this.id = id;
        this.color = color;
    }
    
    //id与color的getter 和setter方法
    ...
    
}

实例化一个Entity对象时:

Entity entity = new Entity();
entity.setId(10);
entity.setColor(1);

或者:

Entity entity = new Entity();
entity.setId(10);
entity.setColor(Entity.red);

使用第一种方式,代码的可读性低,1到底代表的什么颜色,需要到Entity类中查看;
使用第二种方式,同样需要去Entity类中查看代码,才能知道怎么调用,参数要怎么传。

使用枚举来表示颜色

//Color.java
package com.heisenberg.Learn;

public enum Color {
    red,blue,white
}
//Entity.java
package com.heisenberg.Learn;

public class Entity {
    private Color color;
    private int id;
    public Color getColor() {
        return color;
    }
    public void setColor(Color color) {
        this.color = color;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    
    public static void main(String[] args) {
        Entity entity = new Entity();
        entity.setId(10);
        entity.setColor(Color.blue);
    }
}

使用枚举,代码的可读性提升了,并且在给color赋值时,只能选择Color枚举类中定义的三个选项,所以枚举是类型安全的,如果使用了另外的值,将出现编译错误。

java中的枚举是一个类,所以枚举也可一后构造函数和其他的方法;只是枚举继承了Enum类,所以它不能再继承其它的类。

如果给每个枚举值指定属性,则必须给枚举类提供枚举值属性对应数据类型的构造方法。如下,Color的每个枚举值都带有一个int和一个String类型的属性,则必须提供Color(int value,String name)的构造方法;属性的名称不受限制,但是属性的类型要一一对应。

//Color.java
package com.heisenberg.Learn;

public enum Color {
    red(1,"红色"),blue(2,"蓝色"),white(3,"白色");
    
    int value;
    String name;
    private Color(int value, String name) {
        this.value = value;
        this.name = name;
    }
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public static void main(String[] args) {
        Entity entity = new Entity();
        entity.setId(10);
        entity.setColor(Color.blue);
        System.out.println(entity.getColor().getValue());
        System.out.println(entity.getColor().getName());
    }

运行的结果为:


蓝色

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68323.html

相关文章

  • JavaAPI学习——java.lang(一)

    摘要:一接口能够被添加字符序列和字符的对象。对于多线程访问而言没必要是安全的。是值的一个可读序列。此接口对许多不同种类的序列提供统一的只读访问。如果该对象小于等于或大于指定对象,则分别返回负整数零或正整数。 一、接口 1、Appendable 能够被添加字符序列(CharSequence)和字符(char)的对象。CharSequence已知实现的类有:CharBuffer、Segment...

    roland_reed 评论0 收藏0
  • JavaAPI学习——java.lang(二)

    摘要:已知常用子接口实现该接口的类可以成为语句的目标唯一方法返回一个在一组类型的元素上进行迭代的迭代器。使用遍历对象判断是否存在下一个元素获取下一个元素移除该元素为类专门创建的接口。 6 Iterable 已知常用子接口:Collection、List、Set; 实现该接口的类可以成为foreach 语句的目标 List list = new ArrayList(); for(List ...

    princekin 评论0 收藏0
  • Elasticsearch入门学习(四):使用javaAPI学习ES

    摘要:一依赖刚开始少这个包创建索引失败官方文档并没有给这个提示二开始之前的准备官方文档连接操作所用到的实体类三关于索引的操作官方文档新增索引索引名称分片副本内容查询指定索引索引名称删除索引四关于文档的操作官方文档创建文档索引名称前 一、Maven依赖 org.elasticsearch elasticsearch 7.1.0...

    kun_jian 评论0 收藏0
  • Java的类加载机制

    摘要:如果需要支持类的动态加载或需要对编译后的字节码文件进行解密操作等,就需要与类加载器打交道了。双亲委派模型,双亲委派模型,约定类加载器的加载机制。任何之类的字节码都无法调用方法,因为该方法只能在类加载的过程中由调用。 jvm系列 垃圾回收基础 JVM的编译策略 GC的三大基础算法 GC的三大高级算法 GC策略的评价指标 JVM信息查看 GC通用日志解读 jvm的card table数据...

    aervon 评论0 收藏0
  • Java反射:Web学习的灵魂

    摘要:反射学习的灵魂我们从最初的,到面向对象部分,我们可以将代码在计算机中经历的阶段分为三部分源代码阶段类对象阶段运行时阶段而我们知道,中一个类在源代码阶段,是存储在硬盘中的,而编译后,就已经被加载到内存中区,那么有没有一种方法可以在这种情况下 反射:Web学习的灵魂 我们从最初的 javac -HelloWorld.java,到面向对象部分,我们可以将Java代码在计算机中经历的阶段分为三...

    Vultr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<