Java泛型:不兼容的类型必需字符串;找到:java.lang.String

Java泛型:不兼容的类型必需字符串;找到:java.lang.String,java,generics,Java,Generics,我在netbeans中遇到以下编译器错误: 不兼容类型 必需:字符串 找到:java.lang.String 我有点迷茫为什么会这样 代码: 私有类StringIterator实现迭代器{ 私有迭代器i=internalMap.entrySet().Iterator(); @凌驾 公共布尔hasNext(){ return i.hasNext(); } @凌驾 公共字符串next(){ 返回解压缩(i.next().getValue());//此行出错 } @凌驾 公共空间删除(){ i、 删除

我在netbeans中遇到以下编译器错误:

不兼容类型 必需:字符串 找到:java.lang.String

我有点迷茫为什么会这样

代码:

私有类StringIterator实现迭代器{
私有迭代器i=internalMap.entrySet().Iterator();
@凌驾
公共布尔hasNext(){
return i.hasNext();
}
@凌驾
公共字符串next(){
返回解压缩(i.next().getValue());//此行出错
}
@凌驾
公共空间删除(){
i、 删除();
}
}

您的导入内容是什么?您是否导入了“错误的”
字符串?另外,什么是
解压缩


更新:见其他回复,其中有正确的答案。您将您的泛型命名为“字符串”。删除不使用的泛型。

您应该从StringIterator类中删除类型参数。这就使得编译器认为类中任何字符串的发生都是泛型类型,而不是java。
private class StringIterator implements Iterator<String> {
私有类StringIterator实现迭代器{

什么是解压缩?如果它是一个方法,那么它还必须返回字符串。

我想提供另一种情况,这种情况可能会发生,因为它让我有一段时间感到困惑。gkamal所述的解决方案是正确的

就我而言,我有以下几点:

public class NodeLabelTransformer<V, String> implements Transformer<V, String>
{
....
}
在这种情况下,解决方案是将我的类声明为:

public class NodeLabelTransformer<V> implements Transformer<V, String>
{
公共类NodeLabelTransformer实现Transformer
{

我只是想指出,Transformer接口的参数仍然相同,但我的类声明不同。

在大多数情况下,当您的导入不包括import java.lang.String时,您会遇到此错误。

plz提供了有关导入和解压缩()的更多信息这将帮助我们帮助您…将
StringIterator
更改为简单的
StringIterator
。此外,您没有显示
K
类型参数、
internalMap
的声明或
decompression
的签名,所有这些都将非常有用。谢谢。这是解决方案。我不熟悉创建自己的g泛型类。哦,我错过了。哎哟。好消息。+1-我的回答现在已经过时了。
java.lang
下的所有类都是自动导入的。这里,问题来自于对
StringIterator
泛型类型
String
的误用,它隐藏了类
java.lang.String
@Override
public String transform(V s)
{
   StringBuilder label;
   label = new StringBuilder();
   label.append("MyLabelText");
   return (label.toString());
}
public class NodeLabelTransformer<V> implements Transformer<V, String>
{