日常学习整理--注解和反射

@interface

使用此注解可以进行自定义注解,类名即为注解名。自定义注解中只能定义方法,所有方法都是无参无修饰符的,返回值则是基本数据类型、String、Classs、Annotation、Enum或者对应的一位数组。

方法通过default设置默认值。

注解的使用

单方法注解可以直接进行注解名(值)的方法来使用

多方法的使用方式是注解名(方法名=值,方法名=值…)

当方法中存在默认值时可以不显示赋值。

格式

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface 方法名 {

    //value为参数,此条语句的意义是定义一个字符串类型参数value,默认值为空

String value() default “”;

 

    boolean isAlive() default false;

}

 

@Retention

定义注解的保留级别。----即何时该使用该注解

他的取值是RetentionPolicy类型,存在三种取值

SOURCE:在代码编写阶段存在

CLASS:编译阶段注解保留在class文件中,VM运行时不需要保留

RUNTIME:编译阶段注解保留在class文件中,VM运行时仍保留注解

@Target

定义注解作用对象。----即何处该使用该注解

取值范围是ElementType类型,常用的类型

TYPE:类、接口(包括注解)、枚举

FIELD:成员变量

METHOD:成员方法

PARAMETER:方法参数

ANNOTATION_TYPE:注解的注解

 

@Documented

标记自定义注解应该被 javadoc工具记录。----即标记注解的说明

此元注解类型是无成员的

反射相关

类名

用途

Class类

代表类的实体,在运行的Java应用程序中表示类和接口

Field类

代表类的成员变量(成员变量也称为类的属性)

Method类

代表类的方法

Constructor类

代表类的构造方法

Class

获得类中属性

getDeclaredFields(): 获得所有属性的对象

getDeclaredField(String name): 获得某个属性对象

 

获得类中方法相关的方法

getDeclaredMethods() :获得该类所有方法

获得类中构造器相关的方法

getDeclaredConstructors():获得该类所有构造方法

获得类中注解相关的方法

getAnnotation(Class<A> annotationClass) : 返回该类中与参数类型匹配的公有注解对象

 

获得类相关的方法

getSimpleName(): 获得类的名字

 

isAccessible()setAccessible(true)

1.当isAccessible()的结果是false时不允许通过反射访问该字段

2.当该字段时private修饰时isAccessible()得到的值是false,必须要改成true才可以访问

3.所以 setAccessible(true);得作用就是让我们在用反射时访问私有变量

猜你喜欢

转载自www.cnblogs.com/haiyuan6688/p/11330006.html