java.lang.String和String之间的类型不匹配错误

java.lang.String和String之间的类型不匹配错误,java,string,types,variable-assignment,mismatch,Java,String,Types,Variable Assignment,Mismatch,这真是个奇怪的问题,我从来没有遇到过这样的问题。 下面是我在一个更大的类中声明的助手类。它运行得非常好: private static class Tree<String> { private Node<String> root; public Tree(String rootData) { root = new Node<String>(); root.data = rootData; roo

这真是个奇怪的问题,我从来没有遇到过这样的问题。 下面是我在一个更大的类中声明的助手类。它运行得非常好:

private static class Tree<String> {
    private Node<String> root;

    public Tree(String rootData) {
        root = new Node<String>();
        root.data = rootData;
        root.children = new ArrayList<Node<String>>();
    }

    private static class Node<String> {
        String data;
        Node<String> parent;
        ArrayList<Node<String>> children;
    }
}
与:

我得到这个错误:

Type mismatch: cannot convert from java.lang.String to String
我在其他类中测试了一些字符串文字赋值,它似乎工作得非常好。我最近更新到Java1.7.0_15,最近下载并安装了Eclipse4.2。我怀疑在构建路径中可能会有一些混乱。 使用Ubuntu 12.04


任何帮助都将不胜感激!我搜索了又搜索,找不到与此问题相近的任何内容。

您似乎正在尝试使用“String”作为泛型类型的名称创建泛型类。泛型类型所做的是,无论何时从类创建对象,它都会用新类型替换
中的任何对象

因此,在您的类中,如果您创建了一个
,则类中任何一个“String”实例都将替换为“Integer”。这是某些类(如ArrayList)允许使用任何类型的工作方式

通常在使用泛型类型时,使用单个字母,例如“T”,以避免它与实际类类型相同


因此,在您的例子中,您试图将一个实际上不是字符串的“字符串”设置为实际字符串。

您正在创建一个名为“字符串”的新泛型类型参数,这可能不是您想要的

改变

private static class Tree<String> {
我打字解决了它

import java.lang.String;

这真的很有趣。我以前从未遇到过类似的情况。我收到了与字符串somefunction(){}相同的错误消息。导入已删除错误消息。这不应是答案。java.lang和所有子包都是自动导入的,应该存在。写入import java.lang.String;时出错。我没有撒谎。那么,你的本地设置或类路径有更大的问题。String是java.lang的一部分,它是java中可用的默认包,不需要导入。检查接受的答案,这是正确的答案。java.lang不是自动导入的,在我的情况下不是。在教程中导入它。
private static class Tree<String> {
private static class Tree {
import java.lang.String;