我在使用Java中的反射时遇到了一些麻烦。我试图保存一个数据结构的方法,但得到一个错误。该错误是Java,反射,获取类的方法
java.lang.NoSuchMethodException: cs671.eval.SerialList.add(java.lang.Integer, java.lang.String)
的方法,在这种情况下,我想要得到的是一个SerialList是采取了类似和对象作为参数add方法。
structType = "cs671.eval.SerialList"
,keyType = "java.lang.Integer"
和valType = "java.lang.String"
是从文件读入的字符串。
Class dataClass = null, comparableClass = null, objectClass = null;
try{ // create data structure
dataClass = Class.forName(structType);
comparableClass = Class.forName(keyType);
objectClass = Class.forName(valType);
}
catch(ClassNotFoundException e){}
java.lang.Object structObj = null;
try{ // Create a data structure object
structObj = dataClass.newInstance();
}
catch(Exception e){}
Method m = null;
try{ // Attempt to get add method for the data structure
m = dataClass.getMethod("add", comparableClass, objectClass); // This is where it fails
}
catch(Exception e){}
基本上我试图让与该会得到传递到该方法的正确课程的权利数据结构正确的方法,但我不知道怎么告诉实现getMethod方法,这些类(可比的类和对象类)是正确的。
在此先感谢!
补充:这里的SerialList的add方法签名 public void add(java.lang.Comparable, java.lang.Object)
'cs671.eval.SerialList.add'的签名是什么? – Polygnome
您是否尝试过运行Class.getMethods并打印名称/参数类型列表?如果例如SerialList扩展了ArrayList,那么Add方法实际上就是add(int,Object)。 –
Sbodd
@Polygnome:Addes签名发布。 –