理解java反射机制
首先:了解什么是Java反射
官方语言:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
理解:主要是利用Java反射机制对未知或者任意一个对象所属的类,进行查看里面的所有成员变量和方法
换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。
可以通过反射来获得类的对象
反射还可以获得类的属性方法构造器
因为反射式在运行阶段 去反向解析得到以上所有
下面进入代码操作:
首先获取class对象的几种方式
主要有如下三种。
//通过myBatis框架的xml映射文件
1.getMapper(Student.class);
//JDBC
2.Class.forName("Student");
//通过基本的new 对象来调用
3.new Student().getClass();
然后通过Java反射机制获取class里面的数据
直接来包名.类名
Class c=Student.class;
//一,通过Method对象 查询所有的方法(Method)
Method [] ms=c.getMethods();
for (Method method : ms) {
System.out.println(method);
}
通过上述代码输出class中的所有方法。
//二,通过Field对象查询所有Student类里面所有实体对象(Field)
Field [] fs=c.getDeclaredFields();
for (Field field : fs) {
System.out.println(field);
}
上述代码输出显示的是Student类里面的所有实体对象
列如: private int num;
public String name;
protected String address;
String aaa;
(类似于这种 没有封装的setter对象)
输出结果显示:
private int com.qm.test.Student.num
public java.lang.String com.qm.test.Student.name
protected java.lang.String com.qm.test.Student.address
java.lang.String com.qm.test.Student.aaa
下面的话还有一种是查看Student里面的构造器,构造参数
具体测试代码如下:(其重要注意一点就是访问修饰符类型要是public,如果是private是找不到的)
Constructor[] sc=c.getConstructors();
for (Constructor constructor : sc) {
System.out.println(constructor);
//直接查Student类里面构造参数
}
Student实体类里面代码:
private Student(){}
public Student(int a,int b){}
输出结果显示:
public com.qm.test.Student(int,int)
结果:可以看出输出的结果是只有public类型的private没有显示
通过上一种,延申,通过判断来找寻指定类型的构造函数
上代码:Constructor[] sc=c.getConstructors();
for (Constructor constructor : sc) {
if (constructor.toString().contains("public")) {
//contains("public") 起到一个判断作用
Student sst=(Student) constructor.newInstance(1,1);
System.out.println(sst);
}
//直接指定public 以及构造器参数
总结:以上就是鄙人对Java反射机制的一定理解,虽然说不是很深入,但是基本理解够用
总的来说就是通过特定方法查看实体对象里面的属性构造函数,可以通过反射来获得类的对象,反射还可以获得类的属性方法构造器,因为反射式在运行阶段 去反向解析得到以上所有
分享到:
相关推荐
JAVA反射机制及应用例子.。。Reflection API
有大量的实验例子和反射的各种方法说明,有大量的实验例子和反射的各种方法说明。
### Java反射机制详解 #### 一、反射的基本概念与历史背景 反射的概念最早由Smith在1982年提出,其核心思想是程序有能力访问、检测甚至修改自身的状态和行为。这种能力一经提出,迅速成为了计算机科学领域的研究...
通过8个demo,你可以逐步深入理解Java反射机制,从简单的获取类信息,到创建对象,调用方法,访问字段,再到处理注解和泛型,全方位掌握这一强大的工具。每个demo都应该设计为解决一个特定的问题,例如如何动态调用...
下面我们将详细探讨Java反射的基本概念、使用场景以及如何通过`ReflectTest.java`这个简单的例子来理解反射。 ### 1. 反射的基本概念 反射机制允许我们在运行时检查类的信息,包括类名、方法名、参数类型等,并且...
Java反射机制是Java语言提供的一种强大工具,它允许在程序运行时动态地获取类的信息以及对类的对象进行操作。在Java中,静态编译时类型检查确保了代码的稳定性,但有时我们需要在运行时根据需求动态地创建对象、调用...
下面是一个简单的Java反射机制的实现例子: ```java import java.lang.reflect.Field; public class ReflectionExample { private String privateField = "默认值"; public static void main(String[] args) ...
下面我们将深入探讨这个小例子以及Java反射机制的相关知识点。 首先,`Class.forName()`方法在例子中被用来动态加载类。`Class.forName(String className)`接收一个类的全名(包括包名),然后返回对应的`Class`...
下面通过一个简单的示例来展示Java反射机制的工作流程: ```java import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try { Class c = Class.forName(args[0])...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...
通过这个例子,新手可以学习到如何使用Java反射机制来增强代码的动态性,以及如何设计可扩展的系统。反射在很多场景下都很有用,例如在插件系统、序列化、动态代理等领域都有广泛应用。然而,需要注意的是,反射也...
### Java反射机制应用详解 #### 一、Java反射机制简介 Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建...
### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...
Java反射机制允许运行中的程序检查自身,并能直接操作程序的内部属性。这是其他许多编程语言(如Pascal、C或C++)不具备的能力。 **1.1 Reflection的工作机制** 为了展示反射如何工作,我们来看一个简单的例子: ...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Spring框架中,反射扮演着核心角色,...希望这个简单的反射例子能帮助你更好地理解和运用Java反射。
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。通过反射,开发者可以在程序执行时发现并访问类的字段(fields)、方法(methods)以及构造器(constructors),...
标题"java反射机制例子"暗示我们将探讨如何在实际应用中使用Java反射。以下是一些关键知识点: 1. **Class对象**:每个类在Java中都有一个对应的Class对象,可以通过`Class.forName("类全名")`获取。Class对象包含...
要使用蓝牙设备进行通讯必须的先使两个设备之间建立连接,Android SDK中提供了一些方法可供调用,但是有些方法没有提供接口,于是参考了网上的一些资料写了这个例子,顺便学习下Android反射机制的使用,自测OK,留待...
### Java反射机制深入理解 #### 一、反射机制概述 Java反射机制是一种强大的工具,它允许程序在运行时检查和操作任何类、方法、构造函数和字段等元素。这种能力对于构建灵活的应用程序和框架非常有用,特别是那些...
Java反射机制是Java语言提供的一种基础功能,通过反射...总的来说,Java反射机制为Java程序提供了高度的灵活性和动态性,在需要动态创建类实例、访问或修改对象属性以及调用方法的场合,反射机制是一个非常有力的工具。