枚举类与注解

枚举类型(ENUM)

  • 当类的对象只是有限个,是确定的。例如性别:男 女 这样的确定对象个数。
  • 且当需要定义一组常量时,也强烈推荐使用枚举类

枚举类的使用

自定义枚举类
public class Test {
    public static void main(String[] args) {
        System.out.println(Season.SPRING.getName());
    }

}

class Season{
    //1. 声明对象属性
    private final String name;

    //2. 私有化构造器
    private Season(String name){
        this.name = name;
    }

    //3. 当前枚举类的多个对象
    public static final Season SPRING = new Season("春天");

    //4. 获取枚举类的属性
    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;
    }
    // get()
    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;
    }
    // get()
    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

  • 被修饰的Annotaction将会居于继承性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临水而愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值