java - 泛型的类参数
问题描述
此代码无法编译:
public static void main(String[] args) {
someMethod(SomeInterfaceImpl.class); // Compile error
}
static <T> void someMethod(Class<? extends SomeInterface<T>> param) {}
interface SomeInterface<T> {}
class SomeInterfaceImpl<T> implements SomeInterface<T> {}
显示此错误:
The method someMethod(Class<? extends SomeInterface<T>>) in the type SomeApp is not applicable for the arguments (Class<SomeInterfaceImpl>)
我可以忽略泛型并使用@SuppressWarnings("rawtypes")
.
如何更改我的代码以便能够在不省略泛型定义的情况下使用此方法?要么我需要更改方法的调用方式并提供某种泛型类,要么我需要更改方法定义。
解决方案
可能的解决方案
老的:
static <T> void someMethod(Class<? extends SomeInterface<T>> param) {..}
新的:
static <T extends SomeInterface<?>> void someMethod(Class<T> param) {..}
推荐阅读
- django - PyCharm 不会自动识别 Django 项目中的 sqlite3 数据库
- python - 为什么我的while循环在它应该中断的时候没有中断
- win32com - Python通过添加通过外部连接刷新excel中的数据不起作用
- kubernetes - Kubernetes 节点显然充当主节点,但缺少正确的标记
- deep-learning - 如何计算 Mini-batch 的 MSE?
- c++ - 调用 current_exception() 时抛出 bad_exception
- react-native - 标识符已被声明为 react native
- javascript - 可以在客户端记录用户输入的控制台命令吗?
- scala - 限制来自 Spark 执行器的并发 HTTP 请求
- javascript - 如何将两个不同函数的乘积相加成一个新函数?