什么是Java枚举
在Java中,枚举是一种特殊的数据类型,可以用来定义一组有限的值。Java枚举可以让代码更加清晰、简洁,避免使用数字和字符串字面量的不便之处。在Java SE 5之后,枚举成为了语言本身的一个核心特性。
Java枚举使用关键字enum来定义,语法如下:
enum Name {
VALUE1,
VALUE2,
VALUE3,
...
}
其中,Name表示枚举名,VALUE1、VALUE2等表示枚举项。每个枚举项都是一个常量,可以被调用,例如Name.VALUE1。
Java枚举用法示例
Java枚举可以用来替代常量类,例如:
public class TimeConstants {
public static final int MINUTE = 60;
public static final int HOUR = MINUTE * 60;
public static final int DAY = HOUR * 24;
}
使用Java枚举,可以这样定义:
public enum TimeConstants {
MINUTE(60),
HOUR(60 * MINUTE),
DAY(24 * HOUR);
private final int seconds;
private TimeConstants(int seconds) {
this.seconds = seconds;
}
public int getSeconds() {
return seconds;
}
}
这样就可以写成TimeConstants.MINUTE.getSeconds()的形式,增加了代码的可读性和维护性。
Java枚举的高级用法
Java枚举还可以使用抽象方法,实现面向对象编程中的多态性。
public enum Color {
RED {
@Override
public String toString() {
return "红色";
}
},
GREEN {
@Override
public String toString() {
return "绿色";
}
},
BLUE {
@Override
public String toString() {
return "蓝色";
}
};
public abstract String toString();
}
在这个示例中,每个枚举项覆盖了toString()方法,返回对应的颜色字符串。这样可以通过Color.RED.toString()等语句来获取颜色名称,而且还可以使用多态来实现更加灵活的代码。
Java枚举还可以实现接口,例如:
interface Shape {
double getArea();
}
enum Shapes implements Shape {
CIRCLE(5),
RECTANGLE(5, 10),
TRIANGLE(5, 10);
private final double[] args;
Shapes(double... args) {
this.args = args;
}
@Override
public double getArea() {
switch (this) {
case CIRCLE:
return Math.PI * Math.pow(args[0], 2);
case RECTANGLE:
return args[0] * args[1];
case TRIANGLE:
return args[0] * args[1] / 2;
default:
throw new IllegalStateException();
}
}
}
这样定义之后,就可以通过Shapes.CIRCLE.getArea()等语句来获取不同形状的面积。
总结
Java枚举是一种强类型、有限、自给自足的数据类型,可以使用抽象方法、接口等高级特性。使用Java枚举可以简化代码、增加可读性和可维护性,是Java语言中的一个重要特性。
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/javapeixunp5-2.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!