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方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)