Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Reflection + Generic


Автор: firedrago 5.3.2013, 13:30
Всем привет!

Такой вопрос - к примеру у меня есть 3 класса
Код

package test;

abstract public class A<T> {
    public void XXXXXXX(Class<T> clazz, String str){
        System.out.println(clazz + " " + str);
    }
}
 
Код

package test;

public class B extends A<B>{

}

Код

package test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class C {
    public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        B b = new B();
        b.XXXXXXX(B.class, "test 1 !");

        Object cc = Class.forName("test.B");
        Method m = cc.getClass().getDeclaredMethod("XXXXXXX", new Class[]{B.class, String.class});
        m.invoke(cc, new Object[]{B.class, "test 2"});
    }
}


какое правильное значение для  Class<T> для getDeclaredMethod ?

я уже все перепробовал - вываливается с ошибкой
Exception in thread "main" java.lang.NoSuchMethodException: java.lang.Class.XXXXXXX(test.B, java.lang.String)


Зарание благодарен!

Автор: firedrago 5.3.2013, 13:56
разобрался - должно быть не getDeclaredMethod а getMethod и new Class[]{Class.class, String.class}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)