晕,特简单的代码,就是过不了,各位大虾救命啊!!!
错误信息:
public void Test1.test1(java.lang.String,java.lang.String)
java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at Test1.main(Test1.java:18)源代码如下:
import java.lang.reflect.Method;
public class Test1 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Class svclass;
Method svmethod;
try{
svclass=Class.forName("Test1");
svmethod=svclass.getMethod("test1", new Class[] {String.class,String.class});
System.out.println(svmethod.toGenericString());
svmethod.invoke(svclass,new Object[]{"a","b"});
}catch(Exception e){e.printStackTrace();}
}
public void test1(String a,String b)
{
System.out.println("test1 >>"+a+","+b);
}
}
错误信息:
public void Test1.test1(java.lang.String,java.lang.String)
java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at Test1.main(Test1.java:18)源代码如下:
import java.lang.reflect.Method;
public class Test1 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Class svclass;
Method svmethod;
try{
svclass=Class.forName("Test1");
svmethod=svclass.getMethod("test1", new Class[] {String.class,String.class});
System.out.println(svmethod.toGenericString());
svmethod.invoke(svclass,new Object[]{"a","b"});
}catch(Exception e){e.printStackTrace();}
}
public void test1(String a,String b)
{
System.out.println("test1 >>"+a+","+b);
}
}
楼主【langzitianya】截止到2008-07-20 20:08:11的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:100 每贴平均分数:100
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:100
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
你调的方法不是静态方法,所以method的invoke是要和对象绑定的
你把Test1编译了,然后再建一个类Test2反射调用Test1,试试看
import java.lang.reflect.Method;public class Test1
{
public static void main(String[] args)
{
Class svclass;
Method svmethod; try
{
svclass = Class.forName("craky.cmd.temp.Test1");
svmethod = svclass.getMethod("test1", new Class[]{String.class, String.class});
System.out.println(svmethod.toGenericString()); // svclass是一个Class对象,而不是Test1对象,所以不能放在这里
// svmethod.invoke(svclass, new Object[]{"a", "b"});
svmethod.invoke(new Test1(), new Object[]{"a", "b"});
}
catch(Exception e)
{
e.printStackTrace();
}
} public void test1(String a, String b)
{
System.out.println("test1 >>" + a + "," + b);
}
}
svmethod.invoke(sv, new Object[]{"a","b"});