gpt4 book ai didi

java - 具有其他类型 Collection getter 的泛型类

转载 作者:行者123 更新时间:2023-12-04 11:32:54 24 4
gpt4 key购买 nike

目前我正面临 Java 中泛型类的问题。

我有这样的东西:

public class GenericClass<T> {
T doSomething() {...}

Collection<String> getCollection() {...}
}

现在我在没有类型参数的情况下实例化该类的一个对象,因为我对此不感兴趣或者我不知道它。

GenericClass obj = new GenericClass();
for (String str : obj.getCollection() { // won't work
...
}

问题是,编译器不仅会丢弃有关类型参数的信息,还会丢弃有关集合类型 (String) 的信息,尽管这与参数无关。

是我做错了什么,还是 Java 的限制?如果是这样,为什么会有这样的限制?

最佳答案

你做错了什么。

当您不知道 T类型,您应该只使用通配符:GenericClass<?> .当你实例化一个新的 GenericClass 时你不能这样做, 不过,所以只需使用 Object :

GenericClass<?> obj = new GenericClass<Object>();

出于向后兼容的原因,一个完全没有任何通用信息的类(GenericClass 没有任何 <>)有意失去所有通用类型安全性,因此可以安全地使用它前通用代码。

关于java - 具有其他类型 Collection getter 的泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16654561/

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