я встречаю проблемы при помощи шаблонного методаКак передать общий объект как общий параметр для другого метода в java?
Составитель класс:
public class Something<T> {
public static Something newInstance(Class<T> type){};
public <T> void doSomething(T input){};
}
и мой метод:
public <S> void doOtherThing(S input){
Something smt = Something.newInstance(input.getClass());
smt.doSomething(input); // Error here
}
Он получил ошибку во время компиляции:
нет подходящий метод для doSomething (T) T не может быть преобразован в захват # 1 o f? расширяет java.lang.Object ...
Я думаю, что может быть уловкой, чтобы избежать этого, пожалуйста, помогите
Ваш код не компилируется. Пожалуйста, укажите правильные источники – bedrin
Здесь много проблем. Сначала есть два отдельных 'T'. 'doSomething'' T 'не совпадает с классом 'Something'' T ', потому что' doSomething' является универсальным методом, который объявляет свой собственный 'T'. Вы должны назвать две переменные по-разному, потому что они не связаны друг с другом. Тогда тот факт, что 'doSomething' использует только' T' только как тип параметра, а 'T' неограничен, означает, что он принимает что-либо, поэтому он эквивалентен' public void doSomething (Object input) {} '; 'T' бесполезен. То же самое с 'doOtherThing' - это эквивалентно' public void doOtherThing (ввод объекта) ' – newacct