Java反射使用指南
2021/7/6 1:28:21
本文主要是介绍Java反射使用指南,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、Java反射获取类
1.1 通过类全名
Class c = Class.forName("com.vo.Person");
1.2 通过类型获取
Class c =Person.class;
1.3 使用getClass();
Person person = new Person("zm",22); Class c = person.getClss;
1.4 通过类加载器
ClassLoader classLoader = this.getClass().getClassLoader(); Class clazz4 = classLoader.loadClass("com.mysql.cj.jdbc.MysqlDataSource")); System.out.println(clazz4.getName());
二、 反射获取方法
2.1 获得所有构造方法
Class clazz = Class.forName("com.mysql.cj.jdbc.MysqlDataSource"); Constructor[] constructors = clazz.getDeclaredConstructors(); System.out.println("------获取类中的构造方法-----------"); Arrays.stream(constructors).forEach(obj -> { System.out.println(obj); });
2.2 获取类中定义的方法、修饰符
System.out.println("------获取类中定义的方法、修饰符-----------"); for (Method method : methods) { System.out.println(method.getName()); System.out.println(method.getModifiers()); }
三、反射获取属性
Class clazz = Class.forName("com.mysql.cj.jdbc.MysqlDataSource"); System.out.println("-------获取公有的属性------------"); Field[] fields = clazz.getFields(); for (Field field : fields) { System.out.println(field.getName()); } System.out.println("-------获取所有的属性------------"); Field[] pubFields = clazz.getDeclaredFields(); for (Field pubField : pubFields) { pubField.setAccessible(true); System.out.println(pubField.getName()); }
四、注解
4.1 类上注解
// 此处要用反射将字段中的注解解析出来 Class<ReflectAnnotation> clz = ReflectAnnotation.class; // 判断类上是否有次注解 boolean clzHasAnno = clz.isAnnotationPresent(FieldTypeAnnotation.class); if (clzHasAnno) { // 获取类上的注解 FieldTypeAnnotation annotation = clz.getAnnotation(FieldTypeAnnotation.class); // 输出注解上的属性 int age = annotation.age(); String[] hobby = annotation.hobby(); String type = annotation.type(); System.out.println(clz.getName() + " age = " + age + ", hobby = " + Arrays.asList(hobby).toString() + " type = " + type); }
4.2 方法上注解
4.3 字段上注解
这篇关于Java反射使用指南的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?