java 反射 访问父类私有成员

java 反射 访问父类私有成员,第1张

可以看看这个 但是跟反射没什么关系。

利用多态,子类虽然访问不了父类的私有变量,但是可以通过方法访问,see

class a{

private int i = 11;

public void show(){

Systemoutprintln(i);

}

}

class b extends a{

private int j= 12;

public static void main(String[] args){

a aa = new b();

aashow();

}

}

利用反射能

//假设类名为A

// 实例化类

A  p = new A();

// 获取class

Class c = pgetClass();

// 获取该类所有的字段

Field[] fields = cgetDeclaredFields();

// 遍历赋值

for (int i = 0; i < fieldslength; i++) {

String filedName = fields[i]getName();

// AccessibleTest类中的成员变量为private,故必须进行此 *** 作

fields[i]setAccessible(true);

// 判断类型

Class<> type=fields[i]getType();

//获取字段类型

String typeName=typegetName();

Systemoutprintln(typegetName());

// 对字段进行赋值 第一个参数为对象引用第二个参数为要附的值

//如果为字符串类型

if("javalangString"equals(typeName)){

fields[i]set(p, "1");

}

//如果为日期类型

else if("javautilDate"equals(typeName)){

fields[i]set(p, new Date());

}

else{

fields[i]set(p, 1);

}

}

//楼主我只是简单的写了下。可能还需要判断字段名称以及其他类型什么的。

最后希望楼主多看看java 文档。

package reflection;

import javalangreflectField;

import javalangreflectMethod;

/

该类主要练习使用java的反射机制调用其他类的

private方法和变量;

/

public class MethodTest

{

public static void main(String[] args) throws Exception

{

Class<> classType = Peopleclass;

People p1 =(People) classTypenewInstance();

// 获取指定的方法,调用People类的私有方法;

Method method = classTypegetDeclaredMethod("sayHello",

new Class[] { Stringclass });

methodsetAccessible(true);//压制java的访问修饰符;

methodinvoke(p1, new Object[]{"Mr zhou"});

//获取People类的私有属性;

Field field = classTypegetDeclaredField("age");

fieldsetAccessible(true);

fieldset(p1, 12);

Systemoutprintln(fieldget(p1));

}

}

class People

{

private int age;

private String name;

public int getAge()

{

return age;

}

public void setAge(int age)

{

thisage = age;

}

public String getName()

{

return name;

}

public void setName(String name)

{

thisname = name;

}

private void sayHello(String str)

{

Systemoutprintln("Hello: " + str);

}

}

以上就是关于java 反射 访问父类私有成员全部的内容,包括:java 反射 访问父类私有成员、Java反射 在只知道类名的情况下,怎样给其中的私有属性赋值、java 如何调用一个私有方法里的私有成员变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9751818.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存