java反射机制——解析
1、Class类对象的使用可以通过Constructor 类调用有参构造方法完成对象的实例化操作
[html]
public class DumpMethods {
public static void main(String[] args) {
try {
// 定义一个Person实例对象
Person man = new Person("测试", 30);
//获取类对象
Class manClass=man.getClass();
Class param[]=new Class[2];
param[0]=java.lang.String.class;
param[1]=Integer.TYPE;
//获取带两个参数的构造函数
Constructor manCon=manClass.getConstructor(param);
Object ob[]=new Object[2];
ob[0]=new String("zjh");
ob[1]=new Integer(100);
//根据Class类对象调用对应的构造函数生成实例对象
Person newMan=(Person)manCon.newInstance(ob);
System.out.println("name= "+newMan.getName());
System.out.println("age= "+newMan.getAge());
} catch (Throwable e) {
System.err.println(e);
}
}
}
输出结果:
name= zjh
age= 100
2)Field对象使用
[html]
public class DumpMethods {
public static void main(String[] args) {
try {
// 定义一个Person实例对象
Person man = new Person("测试", 30);
Class manClass=man.getClass();
//下面这种获取属性对象,该属性必须是public
Field nameField=manClass.getField("name");
//下面这种对属性是否public活private没有要求
Field ageField=manClass.getDeclaredField("age");
[html]
//这里面设置值只能是public,private的不能设置
[html]
nameField.set(man, "ceshi");
System.out.println(man.getName());
} catch (Throwable e) {
System.err.println(e);
}
}
}
输出结果:
[html]
ceshi
3)method对象的使用
[html]
public class DumpMethods {
public static void main(String[] args) {
try {
// 定义一个Person实例对象
Person man = new Person("测试", 30);
Class manClass=man.getClass();
Class paramName[]=new Class[1];
paramName[0]=java.lang.String.class;
Method nameMethod=manClass.getMethod("setName", paramName);
nameMethod.invoke(man, "zjh");
System.out.println("man对象name==="+man.getName());
} catch (Throwable e) {
System.err.println(e);
}
}
}
输出结果:
[html]
man对象name===zjh
[html]
4)constructor对象的使用
[html]
<pre class="html" name="code">public class DumpMethods {
public static void main(String[] args) {
try {
// 定义一个Person实例对象
Person man = new Person("测试", 30);
//获取类对象
Class manClass=man.getClass();
Class param[]=new Class[2];
param[0]=java.lang.String.class;
param[1]=Integer.TYPE;
//获取带两个参数的构造函数
Constructor manCon=manClass.getConstructor(param);
Object ob[]=new Object[2];
ob[0]=new String("zjh");
ob[1]=new Integer(100);
//根据Class类对象调用对应的构造函数生成实例对象
Person newMan=(Person)manCon.newInstance(ob);
System.out.println("name= "+newMan.getName());
System.out.println("age= "+newMan.getAge());
} catch (Throwable e) {
System.err.println(e);
}
}
}
</pre><br>
<br>
<pre></pre>
补充:软件开发 , Java ,