反射机制及其应用 「爱情、让人受尽委屈。」 2022-07-16 06:45 147阅读 0赞 一个类 有组多个组成部分,例如成员变量,方法,构造方法等。反射就是加载类,并解剖出类的各个组成部分。反射常常用于框架。 **加载类** ![这里写图片描述][20161009090543162] ![这里写图片描述][20161009090555887] 如图的操作便可以进行类的加载,通过如下的常用方法可以解剖类: ![这里写图片描述][20161009090649731] 这些方法可以解剖出构造函数,方法和成员变量(属性)。前三种解剖调出的是声明为public的内容,如声明为private的组成部分,需要使用后三种方法。 解剖出这些成员的作用: 构造函数:创建对象,完成数据初始化,可以利用解剖出的构造函数进行创建对象;字段:封装数据,解剖出可以用于封装数据;成员方法:解剖出之后可以使用。 通过反射的构造函数创建对象: package cn.itcast.reflrct; import java.util.List; public class Person { String name = "aaa"; public Person(){ System.out.println("person"); } public Person(String name){ System.out.println("person name password"); } private Person(List list){ System.out.println(list); } public void aa1(){ System.out.println("aa1"); } public void aa1(String name,int password){ System.out.println(name + ":" + password); } } package cn.itcast.reflrct; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import org.junit.Test; //反射类的构造函数,创建类对象 public class demo2 { //反射构造函数 @Test public void test1() throws Exception { Class clazz = Class.forName("cn.itcast.reflrct.Person"); Constructor c = clazz.getConstructor(null); Person p =(Person)c.newInstance(null);//newInstance返回的是Object,需要进行类型转换 System.out.println(p.name); } @Test public void test2() throws Exception{ Class clazz = Class.forName("cn.itcast.reflrct.Person"); Constructor c= clazz.getConstructor(String.class);//表示是String类型参数的构造函数 Person p = (Person)c.newInstance("xxxx"); System.out.println(p.name); } @Test public void test3() throws Exception{ Class clazz = Class.forName("cn.itcast.reflrct.Person"); Constructor c= clazz.getConstructor(List.class);//表示是可变参数类型参数的构造函数 c.setAccessible(true);//暴力反射,正常私有成员不许外界反射 Person p = (Person)c.newInstance(new ArrayList()); System.out.println(p.name); } //创建对象的另一种方法 @Test public void test4() throws Exception{ Class clazz = Class.forName("cn.itcast.reflrct.Person"); Person p = (Person) clazz.newInstance();//要求Person类必须要有无参的构造函数 //无参的情况下等效于test1() System.out.println(p.name); } //反射类方法 @Test public void test5() throws Exception{ Person p = new Person(); Class clazz = Class.forName("cn.itcast.reflrct.Person"); Method method = clazz.getMethod("aa1",String.class,int.class);//对于private方法使用getDeclaredMethod() method.invoke(p, "asd",38);//如果为static方法,可以不需要对象 } //反射main方法 @Test public void test5() throws Exception{ Class clazz = Class.forName("cn.itcast.reflrct.Person"); Method method = clazz.getMethod("main",String[].class); method.invoke(null,new Object[](new String[]("aaa","bbb"));//此处为通过反射调用参数为数组的方法,需要注意,为static方法,可以不需要对象,所以为null } //反射字段 @Test public void test6() throws Exception{ Person p = new Person(); Class clazz = Class.forName("cn.itcast.reflrct.Person"); Field f = clazz.getField("name");//获取字段name,getField内填写字段名称 Class type = f.getType();//获取字段类型 if(type.equals(String.class)){ String name = (String) f.get(p); System.out.println(name); } //设置字段值 f.set(p, "sssss"); System.out.println(p.name); } } 使用Junit进行单元测试,此处用反射类方法举例: ![这里写图片描述][20161009164316604] [20161009090543162]: /images/20220716/3bf3f11521594fa39f5863f7bd6eaf48.png [20161009090555887]: /images/20220716/691e1a79690b45fc94c296de93440465.png [20161009090649731]: /images/20220716/d7eda9bb881f408188f135d0bd1ec548.png [20161009164316604]: /images/20220716/98b2054a13664be682abacc6b312cd2a.png
相关 深入探讨Java中的反射机制及其应用 Java的反射机制是一种强大的工具,它允许我们在运行时检查类、方法和属性的信息。以下是反射机制的主要特性以及一些实际的应用场景: 1. 类的加载:反射可以让我们在程序运行过程 悠悠/ 2024年09月19日 22:09/ 0 赞/ 2 阅读
相关 Java反射机制及其应用实例 Java的反射机制是一种强大的工具,它允许程序在运行时动态地查看类的信息,调用方法,并操作对象。 以下是反射机制的一些基本概念和一个具体的应用实例: 1. 类:反射可以获取 冷不防/ 2024年09月19日 11:27/ 0 赞/ 24 阅读
相关 Java反射机制的利弊及其应用示例 Java反射机制是一种强大的工具,它允许我们在运行时检查类、方法和字段。以下是反射机制的一些主要优点和缺点: 优点: 1. 动态获取信息:在程序运行过程中,我们可以根据需要动 - 日理万妓/ 2024年09月17日 01:54/ 0 赞/ 8 阅读
相关 Java中的反射机制及其应用案例分析 反射是Java语言提供的一种能力,允许程序在运行时检查类、字段和方法的信息。以下是反射机制的几个关键点以及一个具体的运用案例。 1. **获取对象信息**:通过`Class` 逃离我推掉我的手/ 2024年09月16日 06:03/ 0 赞/ 11 阅读
相关 Java反射机制深入理解及其应用案例 Java反射机制是Java语言强大的内置功能之一,它允许程序在运行时检查类、接口以及方法等信息。以下是反射机制的深入理解和几个实际的应用案例: 1. **获取对象信息**:例 超、凢脫俗/ 2024年09月15日 13:33/ 0 赞/ 16 阅读
相关 深入理解Java反射机制及其常见应用 Java反射机制是Java语言特性之一,它允许程序在运行时动态地获取类的信息,并可以操作对象。 1. **什么是反射**: 反射就是在运行状态中,对于任何对象都能够获取 痛定思痛。/ 2024年09月10日 07:45/ 0 赞/ 24 阅读
相关 Java反射机制及其使用 文章目录 1 Java反射机制概述 2 反射及其使用 2.1 关于类 java.lang.Class 2.2 类的加载 亦凉/ 2022年10月25日 15:24/ 0 赞/ 306 阅读
相关 反射机制及其应用 一个类 有组多个组成部分,例如成员变量,方法,构造方法等。反射就是加载类,并解剖出类的各个组成部分。反射常常用于框架。 加载类 ![这里写图片描述][2016100909 「爱情、让人受尽委屈。」/ 2022年07月16日 06:45/ 0 赞/ 148 阅读
相关 反射机制及其应用场景 反射----1 反射机制 反射的应用场景 Tomcat服务器 1. Java的反射机制 (1).反射和类的关系 在程序运行状态中,对任意一个 比眉伴天荒/ 2021年09月26日 15:54/ 0 赞/ 371 阅读
还没有评论,来说两句吧...