Java でリフレクションを使用すると問題が発生します。データ構造のメソッドを保存しようとしていますが、エラーが発生します。エラーは
java.lang.NoSuchMethodException: cs671.eval.SerialList.add(java.lang.Integer, java.lang.String)
この場合、取得しようとしているメソッドは、Comparable と Object をパラメーターとして受け取る 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 メソッドにそれらのクラス (comparableClass と objectClass) が正しいことを伝える方法がわかりません。もの。
前もって感謝します!
追加: SerialList の add メソッド シグネチャは次のとおりです。
public void add(java.lang.Comparable, java.lang.Object)