day17——枚举和注解

枚举

枚举就是把几个固定的常量列举出来。枚举本质上也是一个类,只不过这个类的对象是几个固定的值,不能让外界创建对象。

public enum  Week {
    //枚举项表示Week类的对象,带括号表示使用有参数构造方法, 不带括号,表示使用空参数构造方法
    SUNDAY("星期日"), MONDAY("星期一"), TUESDAY,WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; 

    private String value; //星期几

    //把构造方法私有化,目的就是不让别人创建的对象
    private Week() {
    }

    //把构造方法私有化,目的就是不让别人创建的对象
    private Week(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Week{" +
                "value='" + value + '\'' +
                '}';
    }
}

枚举类的方法。

public String	name() 
     获取枚举项的名称
public  int	ordinal() 
     获取枚举项的索引
public int	compareTo(E o) 
     比较枚举项的顺序
public String toString() 
     返回枚举项的名称,如果不想要枚举项的名称也可以复写这个方法。
public static T valueOf(Class<T> enumType, String name) 
     获取枚举项

注解

注解用来给代码添加一些额外的标注,可以写在类上,写在方法上,写在变量上。

  • Java的内置注解
@Override: 复写父类方法
@Deprecated: 标记这个方法过时了
@SuppressWarnings: 压制警告
  • 自定义注解
//表示注解的存活时间,在运行时有效
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.TYPE)
public @interface Anno {
    //定义注解的属性,default设置默认值
    public String name();
    public String methodname();
}
  • 使用反射来解析注解
@Anno(name = "com.itheima.Teacher",methodname = "teach")
public class Demo {
    public static void main(String[] args) throws Exception {
        //获取Demo类的字节码
        Class<Demo> clazz = Demo.class;

        //获取类上的注解
        Anno anno = clazz.getAnnotation(Anno.class);

        //获取注解的属性
        String classname = anno.name();
        String methodname = anno.methodname();

        //获取要执行的类的字节码
        Class<?> stuClazz = Class.forName(classname);

        //通过字节码创建的对象
        Object obj = stuClazz.getConstructor().newInstance();

        //获取方法
        Method method = stuClazz.getMethod(methodname);

        //执行方法
        method.invoke(obj);
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值