一. 创建一个简单的java类如下:
package cn.zq;
public class SomeClass {
/**
* 转换成小写
**/
public void toLower(String s)
{
System.out.println("toLower方法");
System.out.println("原字符:"+s);
System.out.println("转换后:"+s.toLowerCase()) ;
}
/**
* 转换成大写
**/
public void toUpper(String s)
{
System.out.println("toUpper方法");
System.out.println("原字符:"+s);
System.out.println("转换后:"+s.toUpperCase()) ;
}
}
二. 创建反射类
package cn.zq;
import java.lang.reflect.InvocationTargetException;
public class TestRefl {
public void test1(String action) throws ClassNotFoundException,
InstantiationException,
IllegalAccessException,
SecurityException,
NoSuchMethodException,
IllegalArgumentException,
InvocationTargetException
{
Class clazz = Class.forName(action);
SomeClass c = (SomeClass) clazz.newInstance();
c.toUpper("ffff");
c.toLower("AAAA");
}
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException,
IllegalAccessException,
SecurityException,
NoSuchMethodException,
IllegalArgumentException,
InvocationTargetException
{
TestRefl tr = new TestRefl();
tr.test1("cn.zq.SomeClass");
}
}
结果如图
反射类也可以写成如下
package cn.zq;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class TestRefl {
public void test1(String action) throws ClassNotFoundException,
InstantiationException,
IllegalAccessException,
SecurityException,
NoSuchMethodException,
IllegalArgumentException,
InvocationTargetException
{
Class clazz = Class.forName(action);
SomeClass c = (SomeClass) clazz.newInstance();
Method m = clazz.getMethod("toLower", new Class[]{String.class});
m.invoke(c, new Object[]{"STR"});
Method m2 = clazz.getMethod("toUpper", new Class[]{String.class});
m2.invoke(c, new Object[]{"str"});
}
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException,
IllegalAccessException,
SecurityException,
NoSuchMethodException,
IllegalArgumentException,
InvocationTargetException
{
TestRefl tr = new TestRefl();
tr.test1("cn.zq.SomeClass");
}
}
结果如下
分享到:
相关推荐
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
下面通过一个简单的示例展示如何使用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语言的一个重要特性,它允许程序在运行时获取类的信息并操作对象。Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用...
JAVA反射机制应用 JAVA反射机制是JAVA语言中的一种动态机制,它能够在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态...
Java反射机制是Java语言提供的一种强大工具,它允许在程序运行时动态地获取类的信息以及对类的对象进行操作。在Java中,静态编译时类型检查确保了代码的稳定性,但有时我们需要在运行时根据需求动态地创建对象、调用...
Java反射机制笔记 Java反射机制是Java语言中一个强大的功能,它允许程序在运行时检查和修改其自身的结构和行为。通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态...
java反射机制源码java反射机制源码java反射机制源码
### Java反射机制总结 #### 反射的概念与起源 反射的概念最早由Smith于1982年提出,指的是程序能够访问、检测并修改其自身状态或行为的能力。这一概念的提出迅速引起了计算机科学领域的广泛关注,并在之后的研究中...
java反射机制和动态代理的原理,熟悉反射机制和动态代理
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。通过Java反射机制,开发者可以在不知道具体类名的情况下创建对象,调用方法,访问和修改私有成员变量,以及...
下面通过一个简单的示例来展示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反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的...
通过8个demo,你可以逐步深入理解Java反射机制,从简单的获取类信息,到创建对象,调用方法,访问字段,再到处理注解和泛型,全方位掌握这一强大的工具。每个demo都应该设计为解决一个特定的问题,例如如何动态调用...
### Java反射机制详解 #### 一、反射的基本概念与历史背景 反射的概念最早由Smith在1982年提出,其核心思想是程序有能力访问、检测甚至修改自身的状态和行为。这种能力一经提出,迅速成为了计算机科学领域的研究...
Java 反射机制简单理解 Java 反射机制是一种强大的机制,它允许程序在运行时检查和修改自身的结构和行为。Java 反射机制简单理解,非常容易理解的 Java 反射机制。 Java 反射机制的主要应用场景有两种:一种是 ...
这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象等核心概念。在这里,我们将详细讨论Java反射的基本用法及其在实际开发中的应用。 1. **什么是反射**: ...
给同事写的反射机制的用法,非常简单易用,大家一看就懂。也便于初学者对反射机制的理解 资源免费提供大家下载,如有疑问,可以直接咨询我