在没有泛型类型的类中,我想声明一个相当复杂的泛型字段,类似于这些:
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/