如何利用java反射顺序的从一个java类中得到其中定义的成员变量名或者方法

如何利用java反射顺序的从一个java类中得到其中定义的成员变量名或者方法,第1张

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

Field field = fields[i];

String fieldName = fieldgetName();

Systemoutprintln("name====="+fieldName);

String firstLetter = fieldNamesubstring(0, 1)toUpperCase();

// 获得和属性对应的getXXX()方法的名字

String getMethodName = "get" + firstLetter + fieldNamesubstring(1);

// 获得和属性对应的getXXX()方法

Method getMethod = classTypegetMethod(getMethodName, new Class[]{});

// 调用原对象的getXXX()方法

Object value = getMethodinvoke(object, new Object[]{});

Systemoutprintln("value===="+value);

}

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程序不能访问持久化类的private方法,但是利用JAVA的反射机制可以实现调用,代码如下: 

<span style="font-size:14px;">

import javalangreflectInvocationTargetException;

import javalangreflectMethod;

public class ReflectDemo {

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

Method method = PackageClazzclassgetDeclaredMethod("privilegedMethod", new Class[]{Stringclass,Stringclass});  

methodsetAccessible(true);

methodinvoke(new PackageClazz(), "452345234","q31234132");

}

}

class PackageClazz {

private void privilegedMethod(String invokerName,String adb) {

Systemoutprintln("---"+invokerName+"----"+adb);

}

}

</span>

#程序输出结果为:---452345234----q31234132

以上就是关于如何利用java反射顺序的从一个java类中得到其中定义的成员变量名或者方法全部的内容,包括:如何利用java反射顺序的从一个java类中得到其中定义的成员变量名或者方法、java 如何调用一个私有方法里的私有成员变量、java反射调用private方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9713376.html

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

发表评论

登录后才能评论

评论列表(0条)

保存