Person.java
Mymain.java
运行结果:
My name is Peter, I'm 30 years old.
package fanshe;
public class Person {
private int age;
private String name;
private String info(){
return "My name is "+ name +", I'm "+age+" years old.";
}
private void sayHellow(String word){
System.out.println(word);
}
}Mymain.java
package fanshe;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Mymain {
public static void main(String[] args) throws Exception{
Mymain.ceratePerson("fanshe.Person", "name", "Peter", "age", 30, "info");
}
private static void ceratePerson(String className, String namefield, String namevalue, String agefield, int agevalue, String methodname) throws Exception{
Class clazz = Class.forName(className);
Object o = clazz.newInstance();
Field field_name = clazz.getDeclaredField(namefield);
field_name.setAccessible(true);
field_name.set(o, namevalue);
Field field_age = clazz.getDeclaredField(agefield);
field_age.setAccessible(true);
field_age.setInt(o, agevalue);
Method method = clazz.getDeclaredMethod(methodname);
method.setAccessible(true);
String result = (String)method.invoke(o);
System.out.println(result);
}
}运行结果:
My name is Peter, I'm 30 years old.
本文深入探讨了Java反射API的应用,通过代码示例展示了如何使用反射API来创建和操作对象实例,包括设置属性、调用方法及获取类信息。详细介绍了关键方法如`Class.forName()`、`Field`、`Method`等,并演示了通过反射实现对象的动态创建和属性操作。
2245

被折叠的 条评论
为什么被折叠?



