簡體   English   中英

在java.lang.String和String之間鍵入不匹配錯誤

[英]Type mismatch error between java.lang.String and String

這真是一個奇怪的問題,我從未遇到類似的事情。 以下是我在一個更大的類中聲明的輔助類。 它運行得非常好:

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;
    }
}

然而,通過搞亂我發現了一個混亂的問題。 通過替換此行:

root.data = rootData;

有:

root.data = "some string literal";

我收到此錯誤:

Type mismatch: cannot convert from java.lang.String to String

我測試了其他類中的一些字符串文字分配,它似乎工作得很好。 我最近更新到Java 1.7.0_15,最近下載並安裝了Eclipse 4.2。 我懷疑在構建路徑中可能存在一些混淆。 使用Ubuntu 12.04

任何幫助將不勝感激! 我搜索和搜索,找不到任何接近這個問題的東西。

您正在創建一個名為“String”的新泛型類型參數,這可能不是您想要的。

更改

private static class Tree<String> {

private static class Tree {

看起來您正在嘗試使用“String”作為泛型類型的名稱來創建泛型類。 泛型類型的作用是,無論何時從類創建對象,它都會將<>中的任何內容替換為新類型。

所以在你的類中,如果你創建了一個Tree<Integer> ,你的類中的“String”實例將被“Integer”替換。 這是某些類(如ArrayList)允許使用任何類型的方式。

通常在使用泛型類型時,使用單個字母(如“T”)來避免它與實際類型相同。

因此,在您的情況下,您嘗試將實際上不是String的“String”設置為實際字符串。

我打字就解決了

import java.lang.String;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM