java - 泛型类型的类参数

标签 java generics parameter-passing suppress-warnings raw-types

此代码无法编译:

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) {..}

关于java - 泛型类型的类参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59028006/

相关文章:

java - .NET 是否有类似于 Azul 为 Java 提供的东西?

java - 泛型 - 为什么类类型变量在静态上下文中无效?

c - 为什么我在将参数传递给不应接受任何传入参数的函数时没有收到警告?

java - JSF:如何向支持 bean 中的组件添加 ajax 功能?

java - 使用用户名和密码连接到另一个服务的 Spring Security 5.2/WebClient 方式是什么?

具有泛型类的 Java 枚举

c# - 传递到方法的参数的值属性

arguments - 推送不会将列表修改为函数参数

java - 自定义过滤器突然破坏@WebMvcTest

java - Scala 是否有可能在不更改 JVM 的情况下实现泛型?