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