Enum değeri sınıfındaki yönteme geçmek ve aynı enum türünde başka bir enum değeri almak istiyorum. Böyle bir şey: yönteminin getEnumAttribute()
aitJava: belirli enumlar ve jenerik Enum <?> parametreler
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;
}
}
Kullanım:
// simple enum
public enum EUploadMethod {
INSERT, UPDATE, DELETE
}
// read enum value from XML config file
EUploadMethod method = XMLUtils.getEnumAttribute(element, "method",
EUploadMethod.INSERT);
Bu kod tamamen işlevseldir, Eclipse derler ve uyarılara veya hatalar olmadan çalışır ve bir cazibe gibi çalışır.
Ama temizleyip Maven2 tarafından komut satırından projeyi derlemek, bunungetEnumAttribute
denir nerede hattında hata ile başarısız:
: Eclipse ve Maven ya Sun JDK 1.6 kullanıyorum
$ mvn clean compile
....
[ERROR] /home/.... DataUploader.java:[173,53] inconvertible types
found : java.lang.Enum<capture#414 of ?>
required: .....DataUploader.EUploadMethod
$ 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"
Sorular:
Bu kod neden Eclipse'da işlevsel olup, aynı javac derleyicisini bildiğim kadarıyla Maven'da hatalarını derler?
Belirli enumları jenerik
Enum<?>
parametrelerine geçirmenin nesi yanlış? o jenerik söz konusu olduğunda
sayesinde
Martin Schayna
Maven-2 etiketini kaldırdık, çünkü bu bir maven ile ilgili sorun değil, bir salt eclipse/javac derleyici sorunudur. –
Eclipse, JDK'dan bağımsız olarak kendi derleyicisine sahiptir. Bu yüzden JDK'nın yüklenmesi gerekmiyor (sadece JRE'ye ihtiyacınız var.) – finnw