通过反射得到一个类的对象,如何对该对象对应的类的父类中的变量赋值
来源:互联网 发布:无线游戏鼠标 知乎 编辑:程序博客网 时间:2024/05/18 18:45
class
Person{
private
int
age;
private
String name;
public
Person(){
}
public
Person(
int
age, String name){
this
.age = age;
this
.name = name;
}
public
int
getAge() {
return
age;
}
public
void
setAge(
int
age) {
this
.age = age;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
}
class
SuperMan
extends
Person
implements
ActionInterface
{
private
boolean
BlueBriefs;
public
static
void
fly()
{
System.out.println(
"超人会飞耶~~"
);
}
public
boolean
isBlueBriefs() {
return
BlueBriefs;
}
public
void
setBlueBriefs(
boolean
blueBriefs) {
BlueBriefs = blueBriefs;
}
@Override
public
void
walk(
int
m) {
// TODO Auto-generated method stub
System.out.println(
"超人会走耶~~走了"
+ m +
"米就走不动了!"
);
}
}
interface
ActionInterface{
public
static
int
nonono =
1
;
public
void
walk(
int
m);
}
通过以下代码可以获取该对象的父类:
方法1:
SuperMan superMan =
new
SuperMan(
10
,
"LL"
);
try
{
//Field field = person.getClass().getDeclaredField("name");
Field field = superMan.getClass().getSuperclass().getDeclaredField(
"name"
);
field.setAccessible(
true
);
field.set(superMan,
"ERWA"
);
System.out.println(superMan.getName());
}
catch
(NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
方法2:
public
static
void
main(String[] args)
throws
Exception {
Class<?> clazz =
null
;
clazz = Class.forName(
"bianchengzhimei.SuperMan"
);
Object p1 = clazz.newInstance();
Field personNameField =
null
;
for
(;clazz != Object.
class
;clazz= clazz.getSuperclass()){
try
{
personNameField = clazz.getDeclaredField(
"name"
);
}
catch
(Exception e) {}
}
personNameField.setAccessible(
true
);
personNameField.set(p1,
"darlingFish"
);
System.out.println(personNameField.get(p1));
}
获取该对象
SuperMan superMan =
new
SuperMan(
10
,
"LL"
);
try
{
//Field field = person.getClass().getDeclaredField("name");
Field field = superMan.getClass().getDeclaredField(
"name"
);
field.setAccessible(
true
);
field.set(superMan,
"ERWA"
);
System.out.println(superMan.getName());
}
catch
(NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
阅读全文
0 0
- 通过反射得到一个类的对象,如何对该对象对应的类的父类中的变量赋值
- 如何得到某个类所对应的class对象
- java反射得到类对象,并且得到类的属性
- Java反射详解-通过对象或者对象实例获得该对象的包的全名和类名
- Spring的如何通过bean创建一个对象,并赋值。
- 通过反射获得类的实例对象
- 得到一个类的class对象
- 如何得到各个字节码对应的实例对象(Class类)
- Java笔记:[反射篇] 利用反射,获取类中的私有内部类对象,并调用该对象的方法
- 用反射将DataTable的一行DataRow构建为一个自定义类的对象 - 给对象的属性赋值
- 通过反射获取类中的属性,并且将类中的属性名称以及对应的值赋给另一个类中的对象
- 通过构造函数反射--通过一个对象获取一个完整的包名和类名
- java通过映射取得方法对一个类的变量进行赋值
- 通过反射,得到真实的类Demo
- 今天碰到的一个问题,关于通过基类对象的引用给子类赋值
- 通过反射获取类对象的成员函数、成员变量(只获取成员函数)、构造函数
- 如何通过反射调用对象的方法?
- 遍历 Map 对象, 利用反射为 Class 对象的对应的属性赋值.
- eclipse maven项目中修改 tomcat 部署路径
- Spring MVC中的@ModelAttribute
- scrollview 嵌套gridview 和 listview 会有冲突
- Spring RestTemplate关联HttpClient4.5的配置HttpClient和自身的BUG
- maven项目读取resources目录下文件
- 通过反射得到一个类的对象,如何对该对象对应的类的父类中的变量赋值
- Android多分辨率布局,多个layout
- I/O多路复用之select函数
- Python数据采集之Scrapy框架
- 嵌入式Linux中的根文件系统
- 三种广播,以及广播接收器的注册方式
- eclipse设置Ctrl+H打开File Search
- hdoj1067 Gap(bfs+hash)
- 阿里巴巴最新面试经验-天猫进出口