@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);得作用就是让我们在用反射时访问私有变量
原文:https://www.cnblogs.com/haiyuan6688/p/11330006.html