gpt4 book ai didi

Java Generics-我可以根据变量类型动态创建列表吗

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:11:12 25 4
gpt4 key购买 nike

有什么方法可以在运行时创建泛型类型的特定实例吗?

例如。

Cacheable instance = getCacheable(someInput);

getCacheble 方法将返回 Cacheable 的实例。所以它可以是任何实现 Cacheable.for 的类,例如客户、产品等。现在我想创建一个由 getCacheable 返回的特定类型的列表,如下所示。这可能吗?如果是,该怎么做?

List<? extends Cacheable> cacheList = new ArrayList<>();

我要创建 ArrayList<Product> or ArrayList<Customer>基于 getCacheable 方法返回的实例。

最佳答案

你可以这样做:

Cacheable instance = getCacheable(someInput);
List<? extends Cacheable> l = new ArrayList<>();
l = Collections.checkedList(l, instance.getClass());

由于类型删除,编译时可访问的所有信息在运行时都会丢失。checkedList方法将确保您的列表将只接收 instance 变量类的实例。

更新:您也可以这样做:

public static <T extends Cacheable> MyOwnCustomGeneric<T> createMyOwnCustomGeneric(Class<T> type) {
return new MyOwnCustomGeneric<T>();
}

// ...
IMyOwnCustomGeneric foo = createMyOwnCustomGeneric(instance.getClass());

关于Java Generics-我可以根据变量类型动态创建列表吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20531679/

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