枚举类型(ENUM)
- 当类的对象只是有限个,是确定的。例如性别:男 女 这样的确定对象个数。
- 且当需要定义一组常量时,也强烈推荐使用枚举类
枚举类的使用
自定义枚举类
public class Test {
public static void main(String[] args) {
System.out.println(Season.SPRING.getName());
}
}
class Season{
private final String name;
private Season(String name){
this.name = name;
}
public static final Season SPRING = new Season("春天");
public String getName() {
return name;
}
}
使用enum关键字定义
- 枚举类默认继承class java.lang.Enum
public class Test1 {
public static void main(String[] args) {
System.out.println(SeasonTest.SPRING.toString());
System.out.println(Arrays.toString(SeasonTest.values()));
System.out.println(SeasonTest.SPRING.getClass().getSuperclass());
}
}
enum SeasonTest{
SPRING("春天"),
SUMMER("夏天");
private final String name;
private SeasonTest(String name){
this.name = name;
}
public String getName() {
return name;
}
}
enum 实现接口
- 在enum类中实现抽象方法(直接在enum中实现show()方法,则所有的枚举对象都使用这个show()方法。想要自定义则需要在提供的枚举对象重写show()方法)
public class Test1 {
public static void main(String[] args) {
System.out.println(SeasonTest.SPRING.toString());
SeasonTest.SPRING.show();
System.out.println(Arrays.toString(SeasonTest.values()));
System.out.println(SeasonTest.SPRING.getClass().getSuperclass());
}
}
interface Info{
void show();
}
enum SeasonTest implements Info{
SPRING("春天"){
@Override
public void show() {
System.out.println("春天 Yes");
}
},
SUMMER("夏天"){
@Override
public void show() {
System.out.println("夏天 Yes");
}
};
private final String name;
private SeasonTest(String name){
this.name = name;
}
public String getName() {
return name;
}
@Override
public void show() {
System.out.println("Yes ! AMD !!!");
}
}
注解(Annotation)
- 是代码里的特殊标记, 可以在编译时,类加载时,运行时被读取,并执行相应的处理
- 使用Annotaction时要在其前面增加@符号,并把该Annotaction当成一个修饰符使用,并用于修饰它支持的程序元素
- 在JAVASE中,注解比较简单,在JAVAEE大量使用
文档注解
@version (表示版本号)
@Date ( 表示时间)
@Author (表示作者)
JDK内置注解
@Override(重写)
interface testann{
void show();
}
class Test implements testann{
@Override
public void show() {
System.out.println("o override it");
}
}
@Deprecated(过时的方法,不推荐使用)
@Deprecated
public Date(int year, int month, int date) {
this(year, month, date, 0, 0, 0);
}
@SuppressWarnings(抑制IDE警告, {}内部表示抑制的警告类型)
@SuppressWarnings({"rawtypes"})
ArrayList list = new ArrayList();
自定义注解
- 自定义新的Annotation类型使用@interface关键字
- 自定义注解自动继承了java.lang.annotaction.Annotaction接口
- 默认值使用defalut
- 如果自定义注解没有成员,那么就是一个标示
public @interface MyAnnotaction {
String value() default "Yes myAnnotaction";
}
@MyAnnotaction()
class Test11{
public static void main(String[] args) {
}
}
元注解
@Retention
- 用于修饰一个Annotaction定义,用于指定该Annotaction的生命周期
SOURCE/CLASS(默认行为)/RUNTIME,只有声明为RUNTIME的生命周期的注解,才能通过反射获取
@Target
- 用于修饰Annotaction的定义,用于指定注解可以修饰那些程序元素
- @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Documented
- 表示被修饰的注解,在被javadoc解析的时候将会被保留下来
@Inherited