У меня возникли проблемы с использованием отражения на Java. Я пытаюсь сохранить метод структуры данных, но получаю сообщение об ошибке. ОшибкаJava, отражение, получение метода из класса
java.lang.NoSuchMethodException: cs671.eval.SerialList.add(java.lang.Integer, java.lang.String)
метод, в данном случае, что я пытаюсь получить метод дополнения для SerialList, который принимает сравнимый и объект в качестве его параметров.
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, что эти классы (compareClass и objectClass) являются правильными.
Заранее благодарен!
Добавлено: Вот способ добавить подпись SerialList в public void add(java.lang.Comparable, java.lang.Object)
Что такое подпись 'cs671.eval.SerialList.add'? – Polygnome
Вы пробовали запустить Class.getMethods и распечатать списки типов имен/параметров? Если, например, SerialList расширяет ArrayList, тогда метод Add фактически будет добавлять (int, Object). –
Sbodd
@Polygnome: добавляет подпись к сообщению. –