Просто нужно выполнить приведение перед вызовом метода. return ((MyValue) t).getValue();
, так что компилятор может знать, что он вызывает метод MyValue.
static <T> int getValue(T t) {
return ((MyValue) t).getValue();
}
в случае нескольких классов вы можете проверить наличие экземпляров, используя оператор instanceof
, и вызвать метод .. как показано ниже
static <T> int getValue(T t) {
//check for instances
if (t instanceof MyValue) {
return ((MyValue) t).getValue();
}
//check for your other instance
return 0; // whatever for your else case.
"funct" должен быть методом со следующей подписью:
void funct(IAsyncResult ar) { }
Вы не можете только использовать метод для своего обратного вызова. Функция должна иметь определенную подпись (список параметров).
То, как делает Вашу 'funct' сигнатуру метода, похоже?
Это возвращается пусто?
Это имеет точно один параметр типа IAsyncResult?
Другими словами, Ваш 'funct' метод соответствует делегату Asynccallback?
каков funct? действительно ли это - делегат? если это, это - подпись, не compatibile с делегатом AsyncCallback.
funct должен быть методом, бывшим похожим на это:
void SomeMethod(IAsyncResult ar)