gpt4 book ai didi

当在类中声明类型参数时,Java 泛型类型丢失常量类型

转载 作者:行者123 更新时间:2023-11-30 08:43:54 24 4
gpt4 key购买 nike

<分区>

我正在使用 Oracle JDK 7u79。我不知道为什么下面的代码会产生编译错误:

package generics;

import java.util.Collection;
import java.util.Collections;

class SomeClass {
public Collection<String> getStringCollection() {
return Collections.singleton("hello");
}
}

class SomeTypedClass<T> {
public Collection<String> getStringCollection() {
return Collections.singleton("hello");
}
}

public class SomeTest {
public static void main(String[] args) {
final int length1 = new SomeClass() .getStringCollection().iterator().next().length();
final int length2 = new SomeTypedClass().getStringCollection().iterator().next().length(); // compilation error
}
}

错误:

Error:(21, 89) java: cannot find symbol
symbol: method length()
location: class java.lang.Object

我指定了常量泛型类型 Collection<String>作为 getStringCollection() 的方法参数所以我认为SomeClassSomeTypedClass应该编译没有错误。

为什么会这样?什么是不断输入的正确解决方案 Collection没有类型转换?

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