- 浏览: 620022 次
- 来自: 信阳
文章分类
最新评论
-
贝塔ZQ:
导出数据到excel文档中,可以使用pageoffice插件实 ...
Java POI 数据导出到Excel 2010 -
熊佳佳:
key是需要向支付宝购买额度的
支付宝即时到帐接口调试入口页面 -
zhuzuofei:
你好,你代码中提供的pid,key好像是无效的...
支付宝即时到帐接口调试入口页面 -
xingxing:
光有图没有解决方案......
centOS setup 命令 设置网络参数 -
atgoingguoat:
...
Android:简单的图片浏览器
反射,一种计算机处理方式。是程序可以访问、检测和修改它本身状态或行为的一种能力。
package com.demo.reflectTest; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; import com.mysql.jdbc.Driver; public class Test { public static void main(String[] args) { try { Driver driver = new Driver(); // 用法一:通过一个对象获得完整的包名和类名 System.out.println(driver.getClass()); // 用法二:实例化Class类的对象 Class<?> class1 = Class.forName("com.mysql.jdbc.Driver"); Class<?> class2 = new Driver().getClass(); Class<?> class3 = Driver.class; System.out.println(class1.getName()); System.out.println(class2.getName()); System.out.println(class3.getName()); // 用法三:通过Class实例化其他无参构造类的对象 Class<?> user = Class.forName("com.demo.reflectTest.User"); User u = null; u = (User) user.newInstance(); System.out.println(user.equals(u)); // 用法四:通过Class调用其他类中的构造函数 (也可以通过这种方式通过Class创建其他类的对象) Constructor<?> cons[] = user.getConstructors(); System.out.println(cons[0].getModifiers() + " " + cons[0].toGenericString()); User u0 = (User) cons[0].newInstance("root", "123456", 20); System.out.println(cons[1].getModifiers() + " " + cons[1].toGenericString()); User u1 = (User) cons[1].newInstance("admin", 23); System.out.println(cons[2].getModifiers() + " " + cons[2].toGenericString()); User u2 = (User) cons[2].newInstance("temp"); // 用法五:返回一个类实现的接口 Class<?> ins[] = user.getInterfaces(); for (Class<?> c : ins) { System.out.println(c.getName()); } // 用法六:取得其他类中的父类 System.out.println(user.getSuperclass()); // 用法七:获得类的属性 Field[] field = user.getDeclaredFields(); for (Field f : field) { System.out.print(Modifier.toString(f.getModifiers()) + " "); System.out.print(f.getType() + " "); System.out.print(f.getName() + " "); System.out.println(); } // 用法八:通过反射调用其他类中的方法(JDK动态代理) Method method = user.getMethod("sayHello"); method.invoke(user.newInstance()); method = user.getMethod("sayWords", String.class); method.invoke(user.newInstance(), "World"); // 用法九:调用其他类的set和get方法 u = (User) user.newInstance(); setter(u, "Password", "654321", String.class); getter(u, "Password"); // 用法十:通过反射操作属性 u = (User) user.newInstance(); Field fd = user.getDeclaredField("username"); fd.setAccessible(true); fd.set(u, "guest"); System.out.println(fd.get(u)); // 用法十一:通过反射取得并修改数组的信息 int[] a = { 5, 4, 3, 2, 1, 0 }; Class<?> array = a.getClass().getComponentType(); System.out.println(array.getName()); System.out.println(Array.getLength(a)); System.out.println(Array.get(a, 2)); Array.set(a, 0, 7); System.out.println(Array.get(a, 0)); // 用法十二:通过反射修改数组大小 int b[] = { 1, 2, 3, 4 }; int newB[] = (int[]) arrayInc(b, 8); System.out.println(Arrays.toString(newB)); } catch (Exception e) { e.printStackTrace(); } } private static Object arrayInc(Object o, int length) { // TODO 自动生成的方法存根 Class<?> arr = o.getClass().getComponentType(); Object newO = Array.newInstance(arr, length); int oldLength = Array.getLength(o); System.arraycopy(o, 0, newO, 0, oldLength); return newO; } private static void getter(Object o, String att) { // TODO 自动生成的方法存根 try { Method method = o.getClass().getMethod("get" + att); System.out.println(method.invoke(o)); } catch (Exception e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } private static void setter(Object o, String att, Object value, Class<?> type) { // TODO 自动生成的方法存根 Method method; try { method = o.getClass().getMethod("set" + att, type); method.invoke(o, value); } catch (Exception e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } }
- reflect_mechanism.rar (805 KB)
- 下载次数: 0
发表评论
-
Ubuntu 装JDK
2017-04-17 10:35 311sudo gedit /etc/profile e ... -
http request response json 测试 Spring MVC
2017-03-24 18:03 398import java.io.BufferedReader; ... -
冒泡排序
2016-10-14 16:56 339package demo; import java.ut ... -
Java3D
2016-10-10 14:44 627package com.demo.java3d.game; ... -
Java 断言 assert 用法
2016-09-26 14:38 754import org.junit.Test; publi ... -
Java 虚拟机
2016-09-26 10:00 301... -
java对象的浅拷贝和深拷贝
2016-08-31 10:43 314import java.io.ByteArrayInputSt ... -
使用递归打印文件及文件目录
2016-08-31 08:55 480import java.io.File; public ... -
java画三角函数
2016-08-26 15:59 1523import java.awt.*; import java ... -
JDK 6 中文 API
2015-08-10 09:34 405下载地址:https://blogs.oracle.com/e ... -
如何判断class文件版本
2014-08-27 08:53 791使用 UE 打开 class 文件,第一行内容: 00 ... -
java 打印
2013-10-17 16:48 735import java.awt.BasicStroke; i ... -
Java POI 数据导出到Excel 2010
2013-10-17 11:01 12961package com.demo.utils; import ... -
XML解析 dom4j的使用
2013-08-19 11:34 714Parsing XML One of the ... -
java 语言概述
2013-06-23 16:33 537... -
java 基本数据类型
2013-06-23 16:18 687• byte: The byte data type is ... -
Java序列化 实现Serializable接口
2013-05-08 15:19 701一个对象序列化的接口,一个类只有实现了Serializable ... -
static 静态变量 类变量 类方法
2013-05-06 10:48 902如果一个成员被声明为static,它就能够在它的类的任何对象创 ... -
Java 线程同步
2013-01-14 14:37 737银行账户中deposit()函数和withd ... -
Java 多线程
2013-01-14 14:10 749两种效果相同 import java.util.Dat ...
相关推荐
在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java.lang.Class`类是反射的核心,它代表了Java中的每一个类。我们可以通过以下方式获取到一个...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...
本示例将深入探讨如何使用Java反射进行各种方法的调用。 首先,让我们从调用无参数的方法开始。在Java中,我们可以通过`Class`对象的`getMethod`方法获取到指定的公共方法,然后通过`invoke`方法调用它。例如: ``...
总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...
在给定的代码中,`TestRef` 类展示了如何使用Java反射调用方法。首先,我们创建了一个 `Foo` 类,它有一个私有字符串成员变量 `msg` 和三个方法:`setMsg`、`getMsg` 和 `outInfo`。`main` 方法是演示反射调用的入口...
Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的应用场景下可能成为一个瓶颈。本文将深入...
以下是对Java反射使用及相关知识点的详细阐述: 1. **获取Class对象** - `Class.forName(String className)`: 通过全限定类名获取Class对象。 - `object.getClass()`: 对象的`getClass()`方法返回该对象的Class...
以下是如何使用Java反射来调用私有方法并获取私有属性值的详细步骤: 1. **获取Class对象**:首先,我们需要获取到目标类的Class对象,这可以通过`Class.forName()`方法或者对象的`getClass()`方法来实现。例如,...
以下是一个简单的Java反射示例,展示了如何使用反射来获取类的信息: ```java import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try { Class c = Class.for...
本文介绍了如何使用Java反射机制来创建get和set方法,并通过反射调用这些方法来访问对象的属性。这种方式虽然灵活,但在实际开发中应当谨慎使用,因为它可能会降低代码的性能和可维护性。了解反射机制的基本原理对于...
下面通过一个简单的示例展示如何使用Java反射机制: ```java import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflectionDemo { public ...
Java反射是Java编程语言中的一个强大特性,它允许运行时的程序访问并操作类、接口、字段和方法等信息,即使这些信息在编译时并未明确知晓。在Java中,反射通常通过`java.lang.Class`类和相关的API来实现。本实例将...
在Java反射中,针对类的不同组成部分(构造函数、字段和方法),`java.lang.Class`类提供了多种反射调用方式来获取信息。以下是几种常用的反射调用: - **获取构造函数**:`Constructor getConstructor(Class[] ...
### Java反射机制应用详解 #### 一、Java反射机制简介 Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建...
在Java编程中,反射(Reflection)是一个强大的工具,它允许我们在运行时检查和操作类、接口、字段和方法。然而,反射操作通常比直接的Java代码执行慢,因为它涉及到动态类型检查和方法调用。因此,为了提高性能,...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有高度的灵活性,尤其在处理框架、插件系统以及元数据驱动...
Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用方法、获取类的信息等。 #### 二、如何创建反射类? ...