[英]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.