通过反射来set和get属性,通过反射来调用User中的method
public class User {
public String name;
public int password;
public static int total = 100;
public User(){
super();
total++;
}
public User(String name, int password){
this.name = name;
this.password = password;
}
public void setInfo(String name, int password){
this.name = name;
this.password = password;
}
public static void showTotal(){
System.out.println("In static method showTotal,total ="+ total);
}
public String toString(){
return "user name:"+name+"\t password:" +password;
}
}
@SuppressWarnings("unchecked")
public class Reflection2 {
public void resetField(Object o, String fieldName, Object newValue) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Class c = o.getClass();
Field f = c.getField(fieldName);
//The object o use the method get to manipulate the filed f
Object fv = f.get(o);
System.out.print("Before modified:" + fieldName + "=" + fv);
f.set(o, newValue);
System.out.println("\t After modified:" + fieldName + "=" + f.get(o));
}
public void resetStaticField(String className,String fieldName, Object newValue) throws ClassNotFoundException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Class c = Class.forName(className);
Field f = c.getDeclaredField(fieldName);
Object fv = f.get(c);
System.out.print("Before Modified:"+fieldName + "="+fv);
f.set(c, newValue);
System.out.println("\t After Modified:" + fieldName +"=" + f.get(c));
}
public void resetMethod(Object o,String methodName,Class[]argTypes,Object[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{
Class c = o.getClass();
Method m = c.getMethod(methodName,argTypes);
//If the method dont have the return value,the result will be null
Object result = m.invoke(o,args);
System.out.println("result:"+result);
}
public void callStaticMethod(String className,String methodName, Class[] argTypes, Object[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{
Class c = Class.forName(className);
Method m = c.getDeclaredMethod(methodName, argTypes);
Object result = m.invoke(null, args);
System.out.println("result:"+result);
}
public static void main(String args[]) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException{
User user = new User("Larry",77582);
Reflection2 t = new Reflection2();
//Here,the modifier of these fields are public
System.out.println("********************************");
t.resetField(user,"name","Mike");
t.resetField(user,"password",15421);
System.out.println(user);
//Also can reset static field in this way
// you can have a try
// t.resetField(user, "total", 80);
//Here, this method only can reset the static field
System.out.println("********************************");
t.resetStaticField("com.ustc.User", "total", 22);
System.out.println("********************************");
//parameter types, should be class
Class[] argTypes = new Class[]{String.class,int.class};
//parameter values
Object[] args1 = new Object[]{"Alex",5555};
t.resetMethod(user, "setInfo", argTypes, args1);
System.out.println(user);
t.resetMethod(user, "showTotal", null, null);
System.out.println("********************************");
t.callStaticMethod("com.ustc.User", "showTotal", new Class[0], new Object[0]);
}
}
分享到:
相关推荐
这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象等核心概念。在这里,我们将详细讨论Java反射的基本用法及其在实际开发中的应用。 1. **什么是反射**: ...
#### 二、Java反射机制简介 Java反射机制允许程序在运行时获取类的信息,这使得Java具有了一定程度上的动态性。具体来说,Java反射机制提供了以下功能: 1. **获取类的信息**:可以在运行时获取类的修饰符、父类、...
Java反射机制是Java编程语言中一个强大的工具,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于java.lang.reflect包中的API,主要包括Class类、Constructor类、Method类和Field类。以下是...
Java反射机制是Java编程语言中的一项核心特性,它允许程序在运行时动态地获取类的信息并进行操作。这使得Java能够在编译后仍然能够灵活地处理类和对象,增强了代码的动态性。在Android应用开发中,反射机制尤其重要...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。这一机制对于理解和实现高级框架、动态代理、元数据处理等场景至关重要。以下是对Java反射机制的详细说明:...
在"JAVA反射机制学习"资料中,你将深入理解这一关键概念。 首先,我们要明白什么是反射。在Java中,反射是一种在运行时分析类、接口、字段和方法的能力。通过使用`java.lang.Class`对象,我们可以获取任何类的信息...
在"北大青鸟java反射机制"的学习资料中,我们将会深入探讨这一核心特性。 首先,我们要理解反射的核心概念:在程序运行时,通过Class对象获取类的信息,包括类名、属性、方法等,并能够动态地创建对象和调用方法。...
Java反射机制是Java编程语言中的一种强大功能,它允许程序在运行时检查和操作类、接口、字段和方法的信息,即使在编译时这些信息是未知的。这一特性使得Java在某种程度上具备了动态语言的特性,尽管Java本身是一种...
Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中...在实践中学习,你会更好地理解Java反射机制的威力和应用场景。
总结来说,Java反射机制是Java语言的一个重要特性,它使得程序能够在运行时动态地获取类的信息并进行操作,提高了代码的通用性和适应性。在实际开发中,反射机制常用于框架设计、插件系统、数据持久化等领域,但同时...
总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...
Java反射机制是Java编程语言中的一个强大特性,...通过学习和实践Java反射机制,你可以更深入地理解Java的运行机制,并在需要动态性、灵活性的场景中发挥其强大的功能。不过,使用反射时也应注意潜在的风险和性能影响。
本笔记主要涵盖了四个核心知识点:Java反射机制、流(I/O流)、内存管理和Java学习的基础。以下是对这些主题的详细阐述: 一、Java反射机制 Java反射机制是Java语言的一个强大特性,允许程序在运行时检查类、接口、...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。这一机制的核心在于`java.lang.Class`类和相关的API,它们提供了对类元数据的访问,使得我们能够在运行时...
通过这个例子,新手可以学习到如何使用Java反射机制来增强代码的动态性,以及如何设计可扩展的系统。反射在很多场景下都很有用,例如在插件系统、序列化、动态代理等领域都有广泛应用。然而,需要注意的是,反射也...
Java反射机制是Java编程语言的一项重要特性,它允许程序在运行时动态地获取类的信息,并且能够对类的属性和方法进行操作。反射机制的核心在于Java的`java.lang.reflect`包,其中包含了`Class`、`Constructor`、`...
自己总结的java反射机制的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者
JAVA反射机制的学习.mht
Java反射机制是Java编程语言中一个...通过阅读"1139760298222java.pdf"这份文档,你可以更深入地理解Java反射机制,并结合实际示例学习如何在项目中有效利用这一特性。记得在实际操作中结合代码实践,以巩固理论知识。
java学习笔记java反射机制