黑马程序员技术交流社区
标题:
反射创建对象调用方法
[打印本页]
作者:
changzhou88
时间:
2019-9-18 21:57
标题:
反射创建对象调用方法
//学生类
public class
Student {
private
String
name
;
private int
age
;
public
String
address
;
public
Student() {
}
private
Student(String name){
}
public
Student(String name,
int
age, String address) {
this
.
name
= name;
this
.
age
= age;
this
.
address
= address;
}
}//测试类Class<?> c = Class.
forName
(
"FanShe.Student"
);
Student s=
new
Student(
"张三"
,
15
,
"成都"
);//普通创建
Constructor<?> con = c.getConstructor(String.
class
,
int
.
class
, String.
class
);//反射创建
Object obj = con.newInstance(
"张三"
,
15
,
"成都"
);//set方法赋值s.setName(
"张三"
);//普通赋值
Field name = c.getDeclaredField(
"name"
);
name.setAccessible(
true
);
name.set(obj,
"张三"
);//调用方法s.Study();
Method study = c.getMethod(
"Study"
);
study.invoke(obj);//反射可访问用私有方法及成员变量
private void
method(){
System.
out
.println(
"method"
);
}//学生类中私有方法Method method = c.getDeclaredMethod(
"method"
);
method.setAccessible(
true
);
method.invoke(obj);//测试类调用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2