Java泛型字段声明

标签 java generics types field

在没有泛型类型的类中,我想声明一个相当复杂的泛型字段,类似于这些:

public class Client {
    private Map<Class<T extends Serializable>, List<Consumer<S extends T>>> classToConsumerTry1;

    private <T extends Serializable, S extends T> Map<Class<T>, List<Consumer<S>>> classToConsumerTry2;
}

问题是 java 编译器不允许我:)

所以我的问题是如何在不向类 Client 添加类型的情况下正确引入 T 和 S。

我的目标是执行 Class作为 Serializable 的子类型和 Consumer作为您为 Class 选择的类别的子类型.

最佳答案

你不能。您唯一的选择是在您的 Client 类声明中声明泛型类型参数。如果您的 Client 类没有泛型类型参数,那么它的成员就不能是泛型的。您必须在类成员的声明中使用实际类型。

关于Java泛型字段声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008752/

相关文章:

java - JComboBox as Jtable CellEditor with Overriden stopCellEditing modifies wrong table cell

python - 使用 python 添加两个自定义数据类型?

java - 如果我的数据库(postgres)中已经存在用户名,我如何检查(java)?

typescript - 假设从不的通用类型守卫

java - Java中如何声明泛型方法?

java - 泛型代码中的错误扩展数字超整数?

javascript - Typescript 将两种数据类型数组合并为一个

c++ - 编译器是否调整 int 大小?

java - Java 中的有界类型

java - 在 spring boot 中使用现有的 http 服务器作为 Camel 端点