当前类中有属性、方法,获取属性、方法不使用反射正常调用:

    1. Object value = obj.getField(); // 获取属性
    2. obj.method(args...) // 获取方法

    使用反射:

    1. Field.get(obj) // 获取属性,使用字段调用对象
    2. method.invoke(obj,args...) // 获取方法,这里与获取字段不同,获取字段没有参数,获取方法可能有参数,可能没有参数
    3. // 这里使用反射进行获取方法的时候需要将参数以可变形参的方式传进来

    注解的定义和使用:

    1. // 注解有其作用域,到时候是写到类上的还是方法上还是属性上,因此需要做一个声明 @Target() ,括号中定义某一个属性不写出,引用的是枚举
    2. // 注解一般都是空的,在用到这个属性的时候会尝试去获取有没有这个注解,如果有,则执行注解的相关内容
    3. import java.lang.annotation.ElementType;
    4. import java.lang.annotation.Retention;
    5. import java.lang.annotation.RetentionPolicy;
    6. import java.lang.annotation.Target;
    7. @Target(ElementType.FIELD) // 未来在字段上使用
    8. @Retention(RetentionPolicy.RUNTIME) // 指定注解生效时间 这里的注解叫 元注解 是注解的注解,类似元数据
    9. public @interface TransientSink {
    10. }