反射和注解的常用方法

反射:允许对成员变量,成员方法和构造方法的信息进行编程访问

获取子节码文件

方式一:

// Class.forName("类路径")
Class clazz=Class.forName("com.example.demo.demos.bean.BigStar");

方式二:

类名字.class

方式三:

类对象.getClass()

反射常用方法

// Class类中用于获取构造方法的方法
getConstructors() 返回所有公共构造方法对象的数组
                // 对象参数的类型
getConstructor(String.class) 返回单个公共构造方法对象
getDeclaredConstructor(): 返回单个构造方法对象 私有的也能获取
getDeclaredConstructors(String.class) :返回所有构造方法对象的数组

Class类中用于获取成员的方法
getMethods() 返回所有公共成员方法对象的数组,包括继承的
getDeclaredMethods() 返回所有成员方法对象的数组,不包括继承的
getMethod() 返回单个公共成员方法对象
getDeclaredMethod() 返回单个成员方法对象
getDeclaredAnnotations() 获取类上所有RUNTIME注解
getDeclaredFields() 获取字段


// 用于创建对象的方法
Constructor
newInstance() 根据指定的构造方法创建对象
setAccessible() 设置为true,表示取消访问检查

注解

元注解

@Target 表示当前注解可以用在的地方
    ElementType.TYPE:用于类、接口或枚举类型。
    ElementType.FIELD:用于字段(成员变量)。
    ElementType.METHOD:用于方法。
    等
@Retention 表示需要在什么级别保存该注解信息,用于描述注解的生命周期
        SOURCE :仅仅是标识 不会被编译
        CLASS 会被编译
        RUNTIME 运行时候有效果
@Document: 说明该注解将被包含在javadoc中 
@Inherited:说明子类可以继承父类中的该注解 

例如:自定义注解

@Target({ElementType.FIELD}) // 使用的范围 字段上
@Retention(RetentionPolicy.RUNTIME) // 生效时候 运行时候
public @interface MyAnne {
    String value() default "";
}

你可能感兴趣的:(java,开发语言)