Java语法学习枚举类
大纲
- 基本介绍
- 枚举的实现
- 枚举类的方法
- 细节
具体案例
1.介绍
2.枚举的实现
1.自定义
这种类似于前面的单例设计模式,私有化构造器(防止创建对象),在内部创建所需对象(用final和static修饰优化底层),去除set方法(防止修改属性),调用我们创建好的类时,直接静态的调用
class fa{
final static fa fa1 = new fa ("父亲1",28);
final static fa fa2 = new fa("父亲2 ",27);
private String name;
private int age;
private fa(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
// public void setName(String name) {
// this.name = name;
// }去除掉set方法
public int getAge() {
return age;
}
// public void setAge(int age) {
// this.age = age;
// }去除掉set方法
}
2.enum关键词
- 枚举的常量必须写最前面
- 枚举默认私有化构造器。所以是不能被继承的
enum fa{
FA1("父亲1",28),
FA2("父亲2",27);//这种枚举的常量必须写最前面
// 而且如果有多个,前面用逗号连接,最后用分号
private String name;
private int age;
fa(String name, int age) {
this.name = name;
this.age = age;
}//枚举默认私有化构造器。所以是不能被继承的
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
注意事项
因为我们使用enum关键字会默认继承Enum,所以我们可以使用Enum里的方法
3.枚举类的方法
注解
首先看枚举类代码
enum fa{
FA1("父亲1",28),
FA2("父亲2",27);//这种枚举必须写最前面
// 而且如果有多个,前面用逗号连接,最后用分号
private String name;
private int age;
fa(String name, int age) {
this.name = name;
this.age = age;
}
}
对于第一点
子类可以重写该tostring方法,直接输出对象信息
对于第二点
name 返回常量名,不能被重写
public class test {
public static void main(String[] args) {
System.out.println(fa.FA1.name());//直接输出名字
}
}
对于第三点
ordinal 输出该枚举对象对应枚举常量是第几个,从零开始编号
(下面我输出的是第一个,但是编号是零)
public class test {
public static void main(String[] args) {
System.out.println(fa.FA1.ordinal());//直接输出是第几个枚举常量
//从零开始编号
}
}
对于第四点
values 按照顺序把枚举对象返回为一个数组
public class test {
public static void main(String[] args) {
fa [] fathers = fa.values();//按照顺序把枚举对象返回为一个数组
}
}
对于第五点
valueof 把一个字符串去匹配我们枚举里面的枚举对象的名字,如果有,就返回那个枚举对象,没有就保错。
public class test {
public static void main(String[] args) {
fa person = fa.valueOf("FA1");//把一个字符串去匹配我们枚举里面的枚举对象的名字
//如果有,就返回那个枚举对象,没有就保错。
}
}
对于第六点
compareTo 返回两个枚举对象的编号的差,前面的减后面的
public class test {
public static void main(String[] args) {
System.out.println(fa.FA1.compareTo(fa.FA2));
//返回两个枚举对象的编号的差,前面的减后面的
}
}