मैं एक खाली जावा एनम प्रकार बना सकता हूं, लेकिन जब मैं कुछ तरीकों को जोड़ना चाहता हूं: मुझे "वाक्यविन्यास त्रुटि" (ग्रहण में) मिलता है। मुझे इसके बारे में कोई आधिकारिक दस्तावेज नहीं मिला, इसलिए मेरा सवाल है: क्या यह असंभव है (तो यह स्पष्ट रूप से कहां उल्लेख किया गया है?) या यह सिर्फ संकलक है जो गलत है?क्या विधियों के साथ एक खाली जावा एनम प्रकार बनाना संभव है?
उत्तर
हाँ यह संभव है।
enum TestEnum {
; // doesn't compile without this.
public void hello() {
System.out.println("Hello World");
}
}
JLS Syntax Definition for enum
s
(ध्यान दें कि जिन उदाहरणों के बिना, आप केवल के static
तरीकों कॉल करने के लिए सक्षम हो जाएगा: तुम बस enum स्थिरांक की (खाली) सूची समाप्त करने के लिए एक ;
जोड़ने की जरूरत enum)
संबंधित:।
हैलो विधि कॉल करना असंभव होगा, है ना? मैं इस तरह के निर्माण के बिंदु को देखने में असफल रहा। –
जैसा कि यह हां खड़ा है। शायद उनके तरीके 'स्थिर' हैं, मुझे नहीं पता। लेकिन हाँ, मैं आपसे सहमत हूं। यह थोड़ा अजीब लगता है। – aioobe
उत्तर और लिंक के लिए धन्यवाद @aioobe। मैं ऐसा इसलिए करना चाहता हूं क्योंकि मुझे लगता है कि यह एक प्राकृतिक, और बहुत आसान/समझने योग्य तरीका है, जो एक गैर-अस्थिर वर्ग को लागू करने का तरीका है (आमतौर पर केवल स्थिरता विधियों के साथ एक उपयोगिता वर्ग): मेरे लिए यह कहना अधिक स्वाभाविक है "ए गैर-अस्थिर वर्ग कोई तत्व नहीं है "(यानी स्वयं का कोई उदाहरण उपयोग करने की अनुमति नहीं है) कहने के बजाय" इसे एक निजी कन्स्ट्रक्टर के साथ एक AssertionError फेंकने के साथ कार्यान्वित किया जाना चाहिए "(सीएफ। प्रभावी जावा # 4)। लेकिन यह केवल मेरा दृष्टिकोण है, इसलिए यदि मैं गलत हूं तो मुझे चुनौती देने में संकोच न करें ... – cedric
हाँ, यह है:
आप enums के खाली सूची समाप्त करने के लिए अर्धविराम (;
) जोड़ने की जरूरत है।
यह संकलित:
public enum MyEnum {
;
public void method() {
}
}
हालांकि मुझे नहीं लगता कि कर सकते हैं इसके लिए उपयोगी होगा क्या।
विधियां उपयोगी हो सकती हैं, जब enums फ़ील्ड से बना होता है .. तो कहें कि आपके पास एक enum रंग है जिसमें एक int प्रतिनिधित्व, लघु स्ट्रिंग प्रतिनिधित्व के साथ-साथ एक प्रदर्शन स्ट्रिंग प्रतिनिधित्व भी है .. तो इस enum में getInteger(), getShortString(), getDisplayString() .. तो उदाहरण के लिए यह getDisplayString() विकल्प का उपयोग कर जीयूआई पर दिखाया जा सकता है ... शायद getShortString() विकल्प का उपयोग कर डीबी में संग्रहीत ... – Scorpion
मुझे लगता है कि बोहेमियन का अर्थ यह है कि वह विधियों के साथ * खाली * enum के साथ उपयोगी कुछ भी नहीं सोच सकता है। – aioobe
हां - इस तरह के किसी भी उदाहरण विधियों को पहुंच योग्य नहीं होगा। इसके अलावा, मैं एक खाली enum के साथ करने के लिए बहुत उपयोगी नहीं सोच सकता। – Bohemian
Absoulely,
/**
* @author The Elite Gentleman
* @since 06 September 2011
*
*/
public enum ExampleEnum {
WHAT_ENUM
;
public void doOperation() {
}
}
बाद में:
ExampleEnum exEnum = ExampleEnum.WHAT_ENUM;
exEnum.doOperation();
पाठ्यक्रम आप कर सकते हैं का! "आईए! आईए! कथुलु फाथगान! फेंग्लुई एमग्ल्वाफह कथुलु रीलह wgah'nagl fhtagn !!"
मूल विचार: "http://www.theserverside.com/news/thread.tss?thread_id=50190"
अपने जोखिम पर वास्तविकता को नष्ट।
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
enum ThingsThatShouldNotBe {
;
public void HelloWorld() {
System.out.println(this.name() + " Says Hello!");
}
public static void main(String[] args) throws Exception {
Constructor<?> con = ThingsThatShouldNotBe.class.getDeclaredConstructors()[0];
Method[] methods = con.getClass().getDeclaredMethods();
for (Method m : methods) {
if (m.getName().equals("acquireConstructorAccessor")) {
m.setAccessible(true);
m.invoke(con, new Object[0]);
}
}
Field[] fields = con.getClass().getDeclaredFields();
Object ca = null;
for (Field f : fields) {
if (f.getName().equals("constructorAccessor")) {
f.setAccessible(true);
ca = f.get(con);
}
}
Method m = ca.getClass().getMethod("newInstance",
new Class[] { Object[].class });
m.setAccessible(true);
ThingsThatShouldNotBe v = (ThingsThatShouldNotBe) m.invoke(ca, new Object[] { new Object[] { "Cthulhu",
Integer.MAX_VALUE } });
System.out.println(v.getClass() + ":" + v.name() + ":" + v.ordinal());
System.out.println("Say hello Cthulhu!");
v.HelloWorld();
}
}
Mwu HA HA HA HA HA HA।
तुम सच में एक Enum की जरूरत है और आप इसे उदाहरण के तरीकों करना चाहते हैं, और आप प्रतिबिंब के बड़े देवताओं को बुलाने के लिए दुनिया पर इस abomination मजबूर करने के लिए समाधान कर लिया है, तो यह उपयोगी है।
यह निश्चित रूप से बाद में अन्य डेवलपर्स के बाहर बिल्ली को भ्रमित कर देगा।
- 1. क्या एक सामान्य इंट-टू-एनम कनवर्टर बनाना संभव है?
- 2. जावा - विधियों की एक सरणी बनाना
- 3. जावा एनम प्रकार तत्काल
- 4. क्या 2.0 फ्रेमवर्क के साथ विस्तार विधियां बनाना संभव है?
- 5. क्या त्रिज्या के साथ एक रूपरेखा सीमा बनाना संभव है?
- 6. क्या TableRow.insertCell() के साथ TH बनाना संभव है?
- 7. जावा में जेनेरिक एनम पैरामीटर। क्या यह संभव है?
- 8. हाइबरनेट एनोटेशन के साथ मैपिंग एनम प्रकार
- 9. कार्यक्षमता के लिए विधियों के साथ Enum (संयोजन कक्षा/एनम)
- 10. जावा में, एनम कॉन्स्टेंट को एक और एनम कॉन्स्टेंट के साथ अर्हता प्राप्त करना क्यों संभव है?
- 11. क्या node.js के साथ डेस्कटॉप अनुप्रयोग बनाना संभव है?
- 12. क्या पाइथन matplotlib के साथ लंबवत प्लॉट बनाना संभव है?
- 13. क्या एमएसपीसी के साथ डेटा संचालित परीक्षण बनाना संभव है?
- 14. क्या F # के साथ Windows PowerShell Cmdlets बनाना संभव है?
- 15. एंड्रॉइड: क्या एक दृश्य की एक प्रति बनाना संभव है?
- 16. एक जावा फ़ाइल में एकाधिक एनम क्लासेस
- 17. क्या यह जावाडोक से जावा कक्षाएं बनाना संभव है?
- 18. क्या विभिन्न लक्षणों से श्रृंखला विधियों को संभव बनाना संभव है?
- 19. क्या जावाएफएक्स वेब एप्लेट बनाना संभव है?
- 20. क्या एक इंटरैक्टिव सी खोल बनाना संभव है?
- 21. क्या एक मॉक ऑब्जेक्ट बनाना संभव है जो EasyMock के साथ कई इंटरफेस लागू करता है?
- 22. क्या जावा एनोटेशन का मान अनिवार्य बनाना संभव है?
- 23. क्या जावा में इस तरह कस्टम जीयूआई बनाना संभव है?
- 24. टाइपिंगफ एनम प्रकार के साथ क्यों प्रयोग किया जाता है?
- 25. क्या विस्तारणीय सूची AlertDialog बनाना संभव है?
- 26. क्या जावा में मूल स्विंग घटकों के साथ चयन करने योग्य हाइपरलिंक बनाना संभव है?
- 27. क्या कोड परमाणु (सी #) का एक टुकड़ा बनाना संभव है?
- 28. क्या सदस्य एनम का उपयोग करके टेम्पलेट का विशेषज्ञ बनाना संभव है?
- 29. क्या एक्लिप्स साइडबार ऑटोहोइड बनाना संभव है?
- 30. क्या पॉइंटर्स का वेक्टर बनाना संभव है?
यदि आप त्रुटि देते हैं तो कोड पोस्ट करते हैं, तो हम एक और विस्तृत उत्तर देने में सक्षम होंगे। – tb189
आप एक खाली enum क्यों चाहते हैं? – maasg
वह रनमटाइम पर उस एनम का एक सेट बनाना चाहता है, लेकिन अभी भी उदाहरण व्यवहार हैं। – ggb667