java注解和反射的结合使用

首先反射注解,那么保留策略必须是Runtime,也就是@Retention(RetentionPolicy.RUNTIME)

①定义一个注解类

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface MyAnnotation {
    int value();
}

②在定义一个类使用注解类

public class MyBean {
    @MyAnnotation(20)
    private int value;
    @Override
    public String toString() {
        return String.valueOf(value);
    }
}

③在main方法里面反射注解

public static void main(String[] args) {
        try {
            Field field = MyBean.class.getDeclaredField("value");//获取成员变量value
            field.setAccessible(true);//将value设置成可访问的
            if(field.isAnnotationPresent(MyAnnotation.class)){//判断成员变量是否有注解
                MyAnnotation myAnnotation = field.getAnnotation(MyAnnotation.class);//获取定义在成员变量中的注解MyAnnotation
                int value = myAnnotation.value();//获取定义在MyBean的MyAnnotation里面属性值
                MyBean myBean=new MyBean();
                field.setInt(myBean, value);//将注解的值20可以赋给成员变量value
                System.out.println(myBean);//验证结果
            }
        } catch (Exception e) {
            e.printStackTrace();
        };
    }

输出结果

时间: 2024-10-10 05:47:36

java注解和反射的结合使用的相关文章

java注解和反射制作dao基类的练习

首先是三个注解 主键注解 package comments; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lan

随笔-java注解,反射,枚举

package aresoft.controller.test; import java.lang.annotation.Annotation;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List; public class Demo3 {    @Sup

Java注解及反射得到注解

Class类的方法 f package com.part1; /** * * @author pc * */ public class Student { public int sid; public char sex; private String sname; private String password; private String cardno; private double money; public Student() { } public Student(int sid, St

JAVA 注解和反射

通过反射来获取类 Class MyTest{ private String name; public String showName{ System.out.println(this.name); } } Class myClass = Class.forName("MyTest"); //代替JVM引入MyTest类 Method myMethod = myClass.getDeclaredMethod("showName", String.class); //获

java自定义注解与反射

java注解与反射一.Java中提供了四种元注解,专门负责注解其他的注解,分别如下 1.@Retention元注解,表示需要在什么级别保存该注释信息(生命周期).可选的RetentionPoicy参数包括: RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉 RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认) RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注

Java高级之注解、反射

Java的注解.反射等机制的产生,让动态代理成为可能,一般通过全限定名+类名,找到类,可以invoke它的构造方法以及其他方法,可以获取它的参数(Field)名称和值. 注解一般用在代码的注释上.代码审查上(有没有按标准写,比如inspect).代码注入(hook,asbectj),需要考虑的是,在何时注入(编译期还运行期) 反射一般用在动态将json和Object互相转化,执行相关底层代码,比如设置某个类的Accessible为false,防止别人hook修改 例:阿里的FastJson解析:

Java基础加强-反射、注解

基础加强 一回顾泛型 二泛型的反射 三注解 基础加强 一.回顾泛型 泛型的基本概念: 以ArrayList<E>为例: ① ArrayList<E>中的E称为类型参数变量 ArrayList<Integer>中的Integer称为实际类型参数 ②整个ArrayList<E>称为泛型类型 整个ArrayList<Integer>称为参数化的类型(ParameterizedType) 定义一个泛型方法: : // <T>:泛型定义的声明,

Java注解教程:自定义注解示例,利用反射进行解析

Java注解能够提供代码的相关信息,同时对于所注解的代码结构又没有直接影响.在这篇教程中,我们将学习Java注解,如何编写自定义注解,注解的使用,以及如何使用反射解析注解. 注解是Java 1.5引入的,目前已被广泛应用于各种Java框架,如Hibernate,Jersey,Spring.注解相当于是一种嵌入在程序中的元数据,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效. 在注解诞生之前,程序的元数据存在的形式仅限于java注释或javadoc,但注解可以提供更多

Java课外拓展-----反射与注解

一:反射(Reflect) 1.1.概要 概要:动态获取类的信息,以及动态调用对象的方法的功能(运行时获得并使用类的信息的方法叫反射) 1.2.主要功能 主要功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象: 在运行时判断任意一个类所具有的成员变量和方法: 在运行时调用任意一个对象的方法 1.3.Class     class的解释: class 定义类的关键字 class 每个类都具备的class静态属性 Class类 描述类的类型信息 1.4.反射常用方法 获得Cla