上一章节
http://lgywindows.iteye.com/blog/1797303
反射的本质:将类的各种属性(类的变量,类的方法,类所在的包名,类的构造器等)映射成相应的java类。用"一群类"去描述和操纵一个类。
这一章是关于类的反射之成员变量的访问与操作。
当对指定类进行动态加载后,并且通过构造器类对指定类进行初始化。就可以使用成员类(Field)对指定类的成员变量进行访问与操作了。请熟悉以前所学知识。
示范代码的简要说明:定义Point类,设定私有变量x和公共变量y,再通过反射技术调用Point类的两个成员变量。
public class MyField{
public static void main(String[] args) throws Exception{
//Point p = new Point(3,5);
System.out.println("定义Point类 设定私有变量x和公共变量y 再通过反射技术调用Point类的两个成员变量");
//对于类的动态加载需要写明类的完整路径(包名.类名)
Class clz = Class.forName("Point");
//如果是缺省构造器可以通过clz.newInstance()来快速得到指定类的实例 本例中的指定类的构造器是带两个参数的,实现语法如下:
java.lang.reflect.Constructor constructor = clz.getConstructor(int.class,int.class);
Point p = (Point)constructor.newInstance(3,5);
java.lang.reflect.Field fieldY = p.getClass().getField("y");
fieldY.set(p, 18);
System.out.println("类名:"+fieldY.getDeclaringClass().getName()+" 属性名:"+fieldY.getName()+" 值:"+fieldY.get(p));
//getDeclaredField可以得到指定类的所有属性(包括私有变量)
java.lang.reflect.Field fieldX = p.getClass().getDeclaredField("x");
//setAccessible设置可以访问私有变量
fieldX.setAccessible(true);
System.out.println("类名:"+fieldX.getDeclaringClass().getName()+" 属性名:"+fieldX.getName()+" 值:"+fieldX.get(p));
}
}
class Point{
private int x;
public int y;
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
}
分享到:
相关推荐
本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...
#### 二、Java反射基础 在深入讨论如何操作父类之前,我们先简要回顾一下Java反射的基本概念: - **Class**: 每个类都有一个与之对应的`Class`对象,它是反射的基础。 - **Constructor**: 用于创建类的新实例。 - ...
#### 二、反射基础 ##### 运行时类型信息 (RTTI) 在Java中,**运行时类型信息**(RTTI)是指程序能够在运行时获取并使用对象和类的类型信息。这使得开发者可以在运行时动态地创建对象、调用方法或访问字段。RTTI...
Java反射是Java编程语言中的一个强大特性,它允许程序在运行时检查类、接口、字段和方法...本教程的650.648.JAVA基础教程将详细讲解如何利用反射获取运行时类的属性结构及其内部结构,帮助你更好地理解和运用这一特性。
Java反射技术是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个技术主要基于Java.lang.reflect包中的类和接口,如Class、Constructor、Method和Field等。...
在 Java 中,可以使用反射机制来获取对象的属性。例如,以下代码可以获取某个对象的属性: ```java public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner....
接下来,我们来看如何通过反射获取和调用类的属性。`Field`类表示类的字段信息。使用`getDeclaredFields()`方法可以获取类的所有声明的字段(包括私有字段),然后使用`set()`和`get()`方法来设置和获取字段值。 ``...
这个Class对象是反射的基础,因为它包含了关于类的所有信息。 3. **获取Class对象**: - 使用`Class.forName("className")`,传入类的全名(包括包名)。 - 通过对象的`getClass()`方法,如`object.getClass()`。...
在Java中,反射机制的核心类是`java.lang.Class`,`java.lang.reflect.Method`,`java.lang.reflect.Field`,以及`java.lang.reflect.Constructor`。这些类提供了对类、方法、字段和构造器的动态访问能力。 标题...
总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...
目标是根据属性文件的内容,使用反射实例化`MyClass`类的对象,并设置`name`字段的值为`value`。 1. **读取属性文件**: ```java Properties props = new Properties(); InputStream in = getClass()....
因此,在使用反射时应谨慎,尽量只在必要时才使用,并确保对访问的类和方法有足够的控制。 总的来说,Java反射提供了一种强大的能力,允许我们在运行时动态地操作类和对象。通过熟练掌握反射机制,开发者可以更好地...
1. **反射基础**: - Java反射API主要由`java.lang.reflect`包提供,包括`Class`,`Constructor`,`Method`和`Field`等类。 - `Class`类代表运行时的类信息,可以通过`Class.forName()`或对象的`getClass()`方法...
- `类名.class`: 直接使用类的`.class`属性获取其`Class`对象。 - `对象.getClass()`: 对象的`getClass()`方法返回该对象的`Class`对象。 2. 创建对象: - `newInstance()`: 调用无参构造器创建对象,要求类有...
`Class`类是反射的核心,它代表了一个类的所有元数据,如类名、属性、构造器、方法等。通过`Class.forName()`方法或`Object.getClass()`方法可以获取到Class对象。 2. **Constructor类**:代表类的构造函数,提供了...
在日常开发中,反射可用于动态加载类、运行时检查对象类型、实现序列化和反序列化、以及在不了解对象类型的情况下调用方法和设置属性。 然而,虽然反射提供了很大的便利,但也有潜在的性能问题和安全性风险。频繁...
本文将从基础到进阶,全面总结Java反射的使用。 **一、反射初识** 反射的核心在于Java运行时能动态地获取类的信息,包括类名、属性、方法、构造器等。通常,我们创建对象是通过类名直接new,而反射则是通过字符串...
"Java核心基础技术卷详解" ...Java 核心基础技术卷涉及到 Java 的基础语法、面向对象、异常、泛型、IO、枚举、反射机制、集合、内部类等多方面的知识点,为 Java 开发者提供了一个全面的学习指南。
Java反射机制是Java语言提供的一种基础功能,通过反射机制,可以在运行时分析类的属性和方法,并动态调用对象的方法。在Java的java.lang.reflect包中包含了一系列的类来支持反射机制的实现,下面详细介绍一下这些类...
Java 类加载与反射是Java开发中的重要概念,它们在后端开发中扮演着核心角色,尤其是在框架和库的实现中。下面将详细解释这两个主题。 ### 类加载 #### 类加载器 类加载器是Java虚拟机(JVM)的一个组成部分,它...