Ваш код не компилируется, но вот что-то похожее, и я полагаю, что вы хотите:
class A<T>{
T value;
B<? super T> b;
void method(){
b.method(value);
}
}
interface B<X>{
<VT extends X> VT method(VT p);
}
// works fine
class C implements B<Number>{
public <VT extends Number> VT method(VT p){return p;}
}
// causes warning
class D implements B<String>{
public <VT extends String> VT method(VT p){return p;}
}
Видя, что у вас нет выбора, чтобы сказать extends String
здесь, я бы сказал, что это ошибка в Eclipse. Кроме того, Eclipse обычно может предложить соответствующий SuppressWarnings
, но не здесь. (Еще один баг?)
Что вы можете сделать, это изменить тип возвращаемого значения и аргумента на String
, а затем подавить (не относящееся к делу) предупреждение безопасности типа, которое оно вызывает:
// no warnings
class D implements B<String>{
@SuppressWarnings("unchecked")
public String method(String p){return p;}
}