java中反射的问题

packageA;classA{privatevoida(Strings){syso(s);}}packageB;classB{main(){Classa=Class.f... package A;
class A{
private void a(String s){syso(s);}
}
package B;
class B{
main(){
Class a = Class.forName("A.A");
Method m = a.getDeclaredMethod("a");
m.setAccessible(true);
A.A b = new A.A();
m.invoke(b , new String[]{"a()"});
1:为什么不打印啊?
2:为什么不能用a.getClassLoader()代替new A.A()?
1已经解决了原来是少了一个参数
展开
 我来答
巨蟹神算子
2018-09-14 · TA获得超过437个赞
知道小有建树答主
回答量:292
采纳率:90%
帮助的人:117万
展开全部

a.getClassLoader()获取的是一个类加载器,类加载器是不能实例化对象的,其实做如下修改即可:

A.A b = new A.A();
// 改为
A.A b = (A.A)a.newInstance();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式