java类的反射
来源:互联网 发布:网络攻击鱼叉 水坑 编辑:程序博客网 时间:2024/06/05 06:33
即反编译,基本上都是框架会使用反射.比如Spring。
首先新建一个Person类,。
package com.hui.reflect;public class Person { private String name; private String age; public Person() { } public Person(String name,String age) { this.name = name; this.age = age; } get...set... @Author({"lisi","zhangsan"}) public void readBook(){} }
在测试类中实验:
反射步骤:
1、 获取类的全路径
String className = "com.hui.reflect.Person";
2、 获取类的字节码文件
Class<?> clazz= Person.class;或者Class<?> clazz = Class.forName(className);
3、获取Person的实例化对象p
// 走无参构造Person p = (Person) clazz.newInstance(); System.out.println(p);// 走有参构造Constructor<?> constructor = clazz.getConstructor(String.class,String.class);// 参数的类型Person p2 = (Person) constructor.newInstance("jack", "23");System.out.println(p2.getName());
4、获取类中的字段
// Field[] fields = clazz.getFields(); //获取公有的所有字段Field[] declaredFields = clazz.getDeclaredFields(); // 获取私有的所有字段for (Field field : declaredFields) { // 设置权限强制访问 field.setAccessible(true); String name = field.getName(); // 获取字段的名字 String value = (String) field.get(p2); // 从p2对象中获取该字段的值 System.out.println(name + ".." + value);}
5、获取类中的方法
// Method[] declaredMethods = clazz.getDeclaredMethods(); //获取所有方法,包括私有,可以遍历 Method getName = clazz.getDeclaredMethod("getName");//获取指定的方法 String result = (String) getName.invoke(p2);//获取该方法的返回值 System.out.println(result);
6、获取方法注解的值
Method readBook = clazz.getMethod("readBook"); // Annotation[] annotations = readBook.getAnnotations(); //获取此方法的所有注解 // for(Annotation anno:annotations){ // System.out.println(anno.toString()); // }Annotation annotation = readBook.getAnnotation(Author.class); System.out.println(annotation.toString());
阅读全文
2 0
- java类的反射
- Java反射概念及类的反射
- java类的反射机制
- JAVA的类反射机制
- java类的反射机制
- java的反射类讲解
- Java类的反射机制
- Java类的反射机制
- JAVA的反射 class类
- JAVA反射-反射的基本概念
- java的反射机制--关于类中属性的反射。
- [Java 15 反射机制 ] 类的生命周期 与 反射总结
- Java反射(二)利用反射分析类的能力
- Java反射reflect学习笔记_3:反射类的方法
- (Java基础--反射)透彻分析反射的基础--Class类
- Java反射(一):获取类的反射
- 反射的概念及在Java中的类反射
- JAVA反射(二):通过反射获取类的结构
- 使用linux系统加密
- 第一次给电脑安装CentOS7
- Android应用资源总结八: 自定义属性获取值的过程解惑
- Application,Task和Process的区别与联系
- DOM中常用的属性
- java类的反射
- Spark2.x学习笔记:13、Spark SQL快速入门
- Java奇淫巧技之Lombok
- 《TCP/IP详解卷一:协议》数据链路层(二)
- 10.12(周四)
- Linux共享库概述
- tableview 选中一行后,不显示选中颜色的方法 tableview 选中一行后,不显示选中颜色,不要将tableview的allowsSelection设置成NO,那样的话可能导致tablev
- 剑指offer之斐波那契数列
- PoJ 2983 Is the Information Reliable? 差分约束系统