WelcomeGetFun 2009-10-15 13:34
浏览 311
已采纳

反射 getMethod 能否传递Object 型参数 ?

[code="java"]
String b = "1111";
Object args = (Object)b;
Method setRunArgsMethod = curClass.getMethod("testArgs", new Class[]{args.getClass()});
[/code]

调用的方法: public void testArgs(Object a) 实际参数是String, 如果函数定义写成 String a, 就没问题,写成Object a, 就有异常 java.lang.NullPointerException
[b]问题补充:[/b]
[code="java"]
import org.dom4j.Document;
import org.jconfig.Configuration;
public interface ConvertMessage
{
public Boolean getSysConfig1(Document sysConfig);
}

public class A8 implements ConvertMessage
{
public Boolean getSysConfig1(Document sysConfig)
{

return true;

}
}
[/code]

[code="java"]
import java.lang.reflect.*;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
public class test
{

public static void main(String[] args)
{
    try
    {
        Class curClass = Class.forName("process.test.A8");
        Object c = curClass.newInstance();

        Document arg = DocumentHelper.createDocument();
        //String arg = "111";
        Method setRunArgsMethod = curClass.getMethod("getSysConfig1", new Class[]{arg.getClass()});
        setRunArgsMethod.invoke(c, new Object[]{arg});
    }
    catch (Exception e)         
    {
        e.printStackTrace();
    }

}   

}

[/code]

[code="java"]
ava.lang.NoSuchMethodException: process.test.A8.getSysConfig1(org.dom4j.tree.DefaultDocument)
at java.lang.Class.getMethod(Class.java:1605)
at test.main(test.java:16)
[/code]
[b]问题补充:[/b]

[code]
Method[] m = curClass.getMethods();
for(int i=0; i<m.length; i++)
{
System.out.println(m[i]);
}
[/code]

打印出方法清单,证明是有的:
public java.lang.Boolean process.test.A8.getSysConfig1(org.dom4j.Document)
[b]问题补充:[/b]
c.getMethod("getSysConfig1", new Class[]{arg.getClass()});

这样写不对,编译都过不去

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2009-10-15 15:38
    关注

    那就是org.dom4j.tree.DefaultDocument的问题导致了

    Method setRunArgsMethod = curClass.getMethod("getSysConfig1", new Class[]{arg.getClass()});

    这里不要用arg.getClass(),用确定的类org.dom4j.Document.class
    Method setRunArgsMethod = curClass.getMethod("getSysConfig1", new Class[]{org.dom4j.Document.class});

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题