枚举 & 注解 & 反射
枚举
没有枚举之前,用级别类去实现一些功能
package xmll.DAY03;
/**
* @Author:小鱼
* 用于描述级别的枚举
* JDK1.5之前枚举
*/
public class Level {
//在类里定义自己的对象
public static final Level LOW = new Level(1);
public static final Level MEDIUM = new Level(2);
public static final Level HIGH = new Level(3);
private int LevelValue;
/**
* 为了不让别人对级别进行添加,对构造方法进行私有化
*/
private Level(int levelValue) {
LevelValue = levelValue;
}
public int getLevelValue() {
return LevelValue;
}
public void setLevelValue(int levelValue) {
LevelValue = levelValue;
}
}
为了更好管理这些代码,产生了枚举
package xmll.DAY03;
/**
* @Author:小鱼
*/
public enum Level1 {
LOW(1),MEDIUM(2),HIGH(3);
private int LevelValue;
private Level1(int levelValue) {
LevelValue = levelValue;
}
public int getLevelValue() {
return LevelValue;
}
public void setLevelValue(int levelValue) {
LevelValue = levelValue;
}
}
还可以继续简化
package xmll.DAY03;
/**
* @Author:小鱼
*/
public enum Level2 {
LOW,MEDIUM,HIGH;
}
package xmll.DAY03;
import static xmll.DAY03.Level2.*;
/**
* @Author:
*/
public class Demo01 {
public static void main(String[] args) {
System.out.println(LOW.compareTo(HIGH));//-2
System.out.println(HIGH.compareTo(LOW));//2
System.out.println(LOW.name());//LOW
System.out.println(LOW.ordinal());//0
System.out.println(LOW.toString());//LOW
Level2 x = Enum.valueOf(Level2.class, "LOW");
System.out.println(x.name());//LOW
}
}
1.4、实现接口的枚举类
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。 每个枚举对象,都可以实现自己的抽象方法。
package xmll.DAY03;
public enum Level2 implements LShow{
LOW{
@Override
public void show() {
System.out.println("低");
}
},MIN {
@Override
public void show() {
System.out.println("中");
}
},HIGH {
@Override
public void show() {
System.out.println("高");
}
};
}
interface LShow{
void show();
}
public class Demo04 {
public static void main(String[] args) {
Level2.HIGH.show();//高
}
}
1.5、注意事项
2、注解
2.1、简介
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。
Java 语言中的类、方法、变量、参数和包等都可以被标注。
和注释不同,Java 标注可以通过反射获取标注内容。
在编译器生成类文件时,标注可以被嵌入到字节码中。
Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。
当然它也支持自定义 Java 标注。
2.3、内置注解