一、自定义枚举类,私有化属性,静态枚举对象且final
class EnumSelf {
private final String name;
private final int age;
public static final EnumSelf ZJL = new EnumSelf("周杰伦", 40);
public static final EnumSelf WLH = new EnumSelf("王力宏", 40);
public static final EnumSelf ZXY = new EnumSelf("张学友", 50);
public static final EnumSelf YYQX = new EnumSelf("易烊千玺", 20);
private EnumSelf(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return this.name+"--"+this.age;
}
}
class JavaStudy {
public static void main(String[] args) {
System.out.println(EnumTest.WLH);
}
}
// 输出
王力宏--40
二、enum枚举类,集成Enum类
enum EnumTest {
ZJL("周杰伦", 40),
WLH("王力宏", 40),
ZXY("张学友", 50),
YYQX("易烊千玺", 20);
private final String name;
private final int age;
private EnumTest(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
// 默认返回对象名,特殊需求徐重写toStirng()
@Override
public String toString() {
return this.name+"--"+this.age;
}
}
class JavaStudy {
public static void main(String[] args) {
System.out.println(EnumTest.YYQX);
System.out.println(EnumTest.YYQX.getClass().getSuperclass());
System.out.println("**********静态方法values()***********");
EnumTest[] values = EnumTest.values();// 返回所有枚举对象
for (EnumTest value : values) {
System.out.println(value);
}
System.out.println("*********静态方法valuesOf()************");
EnumTest zjl = EnumTest.valueOf("ZJL"); // 返回参数同名的对象
System.out.println(zjl);
}
}
// 输出
易烊千玺--20
class java.lang.Enum
*********************
周杰伦--40
王力宏--40
张学友--50
易烊千玺--20
*********************
周杰伦--40
三、enum枚举类无属性
enum EnumTest {
ZJL,
WLH,
ZXY,
YYQX;
}
class JavaStudy {
public static void main(String[] args) {
System.out.println(EnumTest.YYQX);
}
}
//输出
YYQX
四、枚举类实现接口
enum EnumTest implements Song {
ZJL{
// 方式二:对象单独实现接口,本对象专用
@Override
public void sing() {
System.out.println("他在唱《青花瓷》");
}
},
WLH{
// 方式二:对象单独实现接口,本对象专用
@Override
public void sing() {
System.out.println("他在唱《花田错》");
}
},
ZXY,
YYQX;
// 方式一:类中直接实现接口,各枚举对象公用方法
@Override
public void sing() {
System.out.println("ta在唱歌");
}
}
interface Song{
void sing();
}
class JavaStudy {
public static void main(String[] args) {
EnumTest.WLH.sing();
EnumTest.YYQX.sing();
EnumTest.ZJL.sing();
EnumTest.ZXY.sing();
}
}
//输出
他在唱《花田错》
ta在唱歌
他在唱《青花瓷》
ta在唱歌