我想將任何枚舉值傳遞給工具類中的方法,並獲得另一個枚舉類型相同的枚舉值。事情是這樣的:Java:特定枚舉和泛型枚舉<?>參數
public class XMLUtils {
public static Enum<?> getEnumAttribute(Element element, String name,
Enum<?> defaultValue) {
if (element.hasAttribute(name)) {
String valueName = element.getAttribute(name);
// search for value
for (Enum<?> value: defaultValue.getClass().getEnumConstants())
if (value.toString().equalsIgnoreCase(valueName))
return value;
}
// not found, return default value
return defaultValue;
}
}
使用方法getEnumAttribute()
的:
// simple enum
public enum EUploadMethod {
INSERT, UPDATE, DELETE
}
// read enum value from XML config file
EUploadMethod method = XMLUtils.getEnumAttribute(element, "method",
EUploadMethod.INSERT);
這段代碼是全功能的,的Eclipse編譯並運行它沒有警告或錯誤,它就像一個魅力。
但是當我清理和Maven2的編譯命令行項目時,出現錯誤上線其中getEnumAttribute
稱爲:
$ mvn clean compile
....
[ERROR] /home/.... DataUploader.java:[173,53] inconvertible types
found : java.lang.Enum<capture#414 of ?>
required: .....DataUploader.EUploadMethod
我在任的Eclipse和Maven使用Sun JDK 1.6
$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
Java version: 1.6.0_14
Java home: /usr/lib/jvm/java-6-sun-1.6.0.14/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.27-17-generic" arch: "i386" Family: "unix"
問題:
爲什麼這個代碼是可編譯的,並且在Eclipse中可用,並且編譯在Maven中失敗,哪些使用據我所知的相同的javac編譯器?
將特定枚舉傳遞給泛型
Enum<?>
參數有什麼問題?
感謝,
馬丁Schayna
我刪除了maven-2標籤,因爲這不是maven相關的問題,而是純粹的eclipse/javac編譯器問題。 – 2010-02-08 17:30:17
Eclipse擁有自己的編譯器,獨立於JDK。這就是爲什麼它不需要安裝JDK(您只需要JRE)。 – finnw 2010-02-08 17:32:13