java枚举详解,JAVA中的枚举
如何解决写爬虫IP受阻的问题?立即使用。
java枚举类介绍:(java学习视频推荐:java视频教程)
一、什么时候使用枚举类?
有时一个类的对象是有限的和固定的。在这种情况下,我们使用枚举类更加方便。
第二,为什么不用静态常量代替枚举类?
public static final int SEASON _ SPRING=1;
public static final int SEASON _ SUMMER=2;
public static final int SEASON _ FALL=3;
public static final int SEASON _ WINTER=4;枚举更加直观和类型安全。使用常数有以下缺点:
1.该类型不安全。如果需要将季节参数传入一个方法,如果使用了常量,则该参数为int类型,开发者可以传入任意类型的int类型值,但如果是枚举类型,则只能传入枚举类中包含的对象。
2.没有命名空间。开发者命名的时候要以SEASON_开头,这样当另一个开发者看这段代码的时候,就知道这四个常数分别代表季节。
三。枚举类简介
让我们看一个简单的枚举类。
包枚举情况;公共枚举SeasonEnum {
春天,夏天,秋天,冬天;
}enum与类和接口具有相同的状态。默认情况下,由Enum定义的enum继承java.lang.Enum,而不是Object类。枚举可以实现一个或多个接口。枚举的所有实例都必须显示在第一行,不使用new关键字或显式调用构造函数。自动添加公共静态最终装饰。默认情况下,由enum定义的非抽象枚举类用final修饰,并且不能被继承。枚举的构造函数只能是私有的。
四。枚举类简介
属性和方法也可以在枚举中定义,但是它们是静态的和非静态的。
包枚举情况;公共枚举SeasonEnum {
春(春),夏(夏),秋(秋),冬(冬);
私有最终字符串名称;
私有SeasonEnum(字符串名)
{ this.name=name
} public String getName(){ return name;
}
}其实第一行写枚举类实例的时候,默认调用构造函数,所以这里需要传入参数。因为没有显式声明无参数构造函数,所以只能调用带参数的构造函数。
构造函数需要定义为私有的,这样这样的对象就不能在别处声明。枚举通常应该设计成不可变类,它的字段不应该改变,这样会更安全,也更简洁。所以我们用私人决赛来装饰场地。
动词(verb的缩写)枚举类实现接口
枚举可以实现一个或多个接口。就像普通的类一样,接口中定义的所有方法都需要在实现接口时实现。如果没有完全实现,那么这个枚举类就是抽象的,但是不需要用abstract显式修饰。默认会添加系统化。
包枚举情况;
公共枚举操作{
加号{
@覆盖
公共双eval(双x,双y) {
返回x y;
}
},
减去{
@覆盖
公共双eval(双x,双y) {
返回x-y;
}
},
次数{
@覆盖
公共双eval(双x,双y) {
返回x * y;
}
},
划分{
@覆盖
公共双eval(双x,双y) {
返回x/y;
}
};
/**
*抽象方法,由不同的枚举值提供不同的实现。
* @param x
* @param y
* @返回
*/
公共抽象double eval(double x,double y);
公共静态void main(String[] args) {
System.out.println(操作。PLUS.eval(10,2));
System.out.println(操作。MINUS.eval(10,2));
System.out.println(操作。times eval(10,2));
System.out.println(操作。DIVIDE.eval(10,2));
}
}Operatio类实际上是抽象的,不能创建枚举值。因此,当枚举值在这里声明时,所有抽象方法都被实现。这其实是匿名内部类的实现,花括号是一个类体。我们可以看看编译好的文件。
共生变成了五个类文件,证明了Plus,Minor,Times,Divide是匿名内部类的运算实例。
6.switch语句中的表达式可以是枚举值。
Java5增加了enum关键字和扩展开关。
包枚举情况;
公开课SeasonTest {
公共无效法官
{
开关
{
表壳弹簧:
system . out . println(‘春天适合郊游。’);
打破;
案例夏季:
System.out.println(我夏天要去游泳。);
打破;
案例下降:
system . out . println(‘秋天一定要去旅游。’);
打破;
冬季案例:
System.out.println(冬天下雪就好了。);
打破;
}
}
公共静态void main(String[] args) {
SeasonEnum s=SeasonEnum。春天;
SeasonTest test=new SeasonTest();
测试法官;
}
}枚举值直接写在}case表达式中,没有添加枚举类作为限制。
推荐:java基础教程以上是java枚举类的详细内容(附代码)。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。