反射和注解

反射和注解

反射

获取字节码的三种方法:

 获取class对象的三种方法
 1.Class.forName(全类名)
 2.类名.class
 3.对象.getClass()

如:

		//1.Class.forName(全类名)
		Class<?> clazz1 = Class.forName("com.njau.construct.Person");
		//2.类名.class
        Class<Person> clazz2 = Person.class;
        //3.对象.getClass()
        Person person = new Person();
        Class<? extends Person> clazz3 = person.getClass();

(其他操作可看JDK文档的Class类进行)

注解

例:

/** * @author 张文军 * @Description: * @Company:南京农业大学工学院 * @version:1.0 * @date 2019/8/3113:57 */
@Target({ElementType.TYPE})//注解可以用于什么位置
@Retention(RetentionPolicy.RUNTIME)//注解保留的时期(源码,Class,RunTime)
public @interface Pro {//注解的形式//public @interface 注解名称
/** * *以下为注解的属性,即接口的方法 */
    /** * 类的全路径 * @return */
    String clazzPath();

    /** * 方法名 * @return */
    String methName();
}

解析注解

 		//获取当前类的Class(字节码文件对象)、
        Class<TestPro> testProClass = TestPro.class;
        /** 获取注解的对象(注解在哪里就获取哪里的注解对象,这里是在类上, 所以获取该类的注解对象)用相对应的对象获取指定的注解对象,如当前是Pro.class 注解 */
        Pro proClassAnnotation = testProClass.getAnnotation(Pro.class);
        //获取注解的属性
        String clazzPath = proClassAnnotation.clazzPath();
        String methName = proClassAnnotation.methName();
        //用反射的方法创建对象和运行方法(注解的使用)
        Class<?> aClass = Class.forName(clazzPath);
        Object instance = aClass.newInstance();
        Method method = aClass.getMethod(methName);
        method.invoke(instance);
全部评论

相关推荐

02-08 15:53
门头沟学院 Java
CoderEcho:让公司知道便宜没好货
点赞 评论 收藏
分享
头像
02-15 16:23
中南大学 Java
野猪不是猪🐗:签了美团真是不一样! 亲戚们都知道我签了美团,过年都围着我问送一单多少钱,还让弟弟妹妹们引以为戒,笑我爸我妈养了个🐢孩子,说从小就知道我这个人以后肯定没出息,我被骂的都快上天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务