引用的參數化類型我試圖找出如何引用參數化接口作爲註釋屬性:從註解
public class Example {
public interface MyService<T extends Number> {
T someNumber();
}
public class BaseServiceImpl<T extends Number> implements MyService<T> {
@Override
public T someNumber() {
return null;
}
}
public @interface ServiceType {
Class<? extends MyService<?>> value();
}
@ServiceType(BaseServiceImpl.class)
public static void main(String[] args) {
System.out.println("Hello World");
}
}
上面的代碼失敗,在@ServiceType
註釋的類型不匹配。我相信問題出在我爲value
屬性指定的邊界上。我也注意到,當一個類型不通用時,它可以正常工作;例如@ServiceType(IntegerService.class)
作品給出:
public class IntegerService extends BaseServiceImpl<Integer> { /* ... */ }
缺少什麼我得到擺脫失配誤差的努力提供泛型類型是什麼時候?