博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java枚举与常量类的区别
阅读量:4182 次
发布时间:2019-05-26

本文共 1464 字,大约阅读时间需要 4 分钟。

常量

public class Constant{
public static final String CONST_ONE = "bb"; public static final String CONST_TWO = "cc";}
1
2
3
4
5
6
7
1
2
3
4
5
6
7
  • 常量作为参数时,是String,int等弱类型,开发人员可以传入没有在常量接口里定义的值,这个问题无法通过编译器发现。

  • 由于开发人员可以直接写常量,所以不能用==对比,只能用equals对比,不能优化性能。

  • 开发人员没有参考资料时,不可能知道某个int类型的参数到底应该赋什么内容。

  • 编译时,是直接把常量的值编译到类的二进制代码里,常量的值在升级中变化后,需要重新编译引用常量的类,因为里面存的是旧值。

  • 如果常量类的构造器不私有,无法限制开发员继承/实现接口,开发员能够在子接口里继续添加常量.而这些常量可能得不到祖先层的支持。

枚举常量类

public class Constant{
private String name; private EnumClassA(){ this.name = name; } public static final Constant CONST_ONE = new Constant("bb"); public static final Constant CONST_ONE = new Constant("cc");}
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
  • 私有构造函数,避免被继承和扩展。

  • 定义方法的参数时,必须用枚举常量类类型,如上面的Constant,这样就转变成了强类型,不会出现弱类型引用的问题。

  • 常量值地址唯一,可以用==直接对比,性能会有提高。

  • 编译时,没有把常量值编译到代码里,即使常量的值发生变化,也不会影响引用常量的类。

enum类型

public static enum EnumConstant{    ONE(1),TWO(2),THREE(3);    private int num;    EnumConstant(int num){        this.num = num;    }    public int getValue(){        return num;    }}   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

jdk1.5后引入的,是枚举常量类的代码封装简化。

转载地址:http://pmzoi.baihongyu.com/

你可能感兴趣的文章
Spring框架的开发学习:第一节 创建对象
查看>>
教你如何在Spring官网下载jar包
查看>>
无水印火山小视频下载教程
查看>>
如何在react项目中配置less
查看>>
FAQ:NodeJS安装报错npm WARN saveError ENOENT: no such file or directory, open 'G:\Node\package.json'
查看>>
Git快速入门
查看>>
MySql数据中SQL优化第一篇:了解表操作,定位执行效率低的SQL
查看>>
MySql数据库优化第二篇:通过EXPLAIN分析低效SQL的执行计划
查看>>
MySql数据库中SQL优化第三篇:通过show profile 分析SQL
查看>>
阿里巴巴java操作手册的的IDE插件
查看>>
IDEA搭建maven项目
查看>>
MySQL数据库SQL优化第四篇:通过trace分析优化器如何选择执行计划
查看>>
MySQL数据库SQL优化第五篇:确定问题使用索引提高查询效率
查看>>
MYSQL数据库中SQL优化第六篇:索引无效的使用场景
查看>>
IntelliJ IDEA 中 右键新建时,选项没有Java class的解决方法和具体解释
查看>>
MySQL数据库SQL优化第七篇:查看索引使用情况
查看>>
MySQL数据库SQL优化第八篇:介绍两个简单实用的优化方法
查看>>
MySQL数据库SQL语句之优化INSERT语句
查看>>
MySQL数据库SQL优化之order by 语句
查看>>
MySQL数据库SQL优化之GROUP BY 语句和优化嵌套查询
查看>>