java 反射机制 调用class方法,但是这个类有一个private的构造方法无法new和newInstance

java 反射机制 调用class方法,但是这个类有一个private的构造方法无法new和newInstance,第1张

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

    Class<ModTest> modTestClass = ModTestclass;

    Constructor<ModTest> declaredConstructor = modTestClassgetDeclaredConstructor();

    declaredConstructorsetAccessible(true);

    Method method = modTestClassgetDeclaredMethod("testM", Stringclass);

    methodsetAccessible(true);

    Object aa = methodinvoke(declaredConstructornewInstance(), "aa");

    Systemoutprintln(aa);

}

代码如上,使用暴力反射即可

使用反射可以获取到;

代码如下:

import javalangreflectField;  //这是需要引入的包Field[]  f = 类名classgetDeclaredFields(); //获取该类的字段(public, protected, default (package) access, and private)

for(Field ff:f)            //遍历字段

{

  Systemoutprintln(ffgetType());    //获取字段类型

  Systemoutprintln(ffgetName());    //获取字段名

}

Class clazz = loaderloadClass("combaobaotaoreflectPrivateCar");

PrivateCar pcar = (PrivateCar)clazznewInstance(); // package comtestspringreflect;

虽然类名相同,但包名不同,不是同一个类,所以不能转换。

Java中只有类的和包名完全相同,才是同一个类。

改为:

combaobaotaoreflectPrivateCar pcar = (combaobaotaoreflectPrivateCar)clazznewInstance();

或者

Class clazz = loaderloadClass("comtestspringreflectPrivateCar");

以上就是关于java 反射机制 调用class方法,但是这个类有一个private的构造方法无法new和newInstance全部的内容,包括:java 反射机制 调用class方法,但是这个类有一个private的构造方法无法new和newInstance、Java如何获得一个类里面的各个属性和类型、反射机制访问私有方法代码异常"java.lang.ClassCastException"等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存