gpt4 book ai didi

java - 强制上界通配符的类型?

转载 作者:行者123 更新时间:2023-12-04 05:19:26 25 4
gpt4 key购买 nike

我有一个具有多个上限通配符的变量,如下所示:

private Map< Class< ? extends MyClass1 >, List< ? extends MyClass2< ? extends MyClass3, ? extends  MyClass1> > > _variableName;

有没有办法强制绑定(bind)值 ? extends MyClass1 Class 类的 Type 和 MyClass2 类的第二个参数是否相同?

最佳答案

是的:

    public class Foo<T extends MyClass1> {
private Map< Class<T>, List<? extends MyClass2<? extends MyClass3, T>>> bar;
...
}

您也可以使用通用方法来执行此操作。这取决于您要在哪里做出保证(以及在哪里实例化 Map)、定义类或调用实例化此 Map 的方法时。

更新:

为了回应(正确的)观察,这张 map 将只包含一个元素,也许提问者已经想到了这一点:
    public class Foo {
private Map<Class<? extends MyClass1>, List<? extends MyClass2<? extends MyClass3, ? extends MyClass1>>> bar;

public <T extends MyClass1> void add(Class<T> myClass, List<? extends MyClass2<? extends MyClass3, T>>> myList) {
bar.put(myClass, myList);
}

...
}

假设这是将元素添加到您的私有(private) map 的唯一方法,则可以确保类型始终匹配。

关于java - 强制上界通配符的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com