2011-04-09 9 views
31

देना कहते हैं कि मैं कैसे मैं कुछ "उर्फ" प्रकारमैं जावा में कुछ वैरिएबल प्रकार उर्फ ​​कैसे बना सकता हूँ

Map<String, String> 

कुछ करने के लिए है कि आसान फिर से लिखा जा करने के लिए कर सकते हैं इस कोड

Map<String, String> list = new HashMap<String, String>(); 
list.put("number1", "one"); 
list.put("number2", "two"); 

है जैसे

// may be something like this 
theNewType = HashMap<String, String>; 

theNewType list = new theNewType(); 
list.put("number1", "one"); 
list.put("number2", "two"); 

मूल रूप से मेरे सवाल, कैसे "उर्फ" कुछ "प्रकार" के लिए बनाने के लिए किया जाता है, तो मैं यह आसान लिखने के लिए बनाने के लिए और आसान क कर सकते हैं पूरे कार्यक्रम कोड को बदलने की जरूरत है।

धन्यवाद, और खेद है कि यह मूर्ख सवाल है। मैं जावा में थोडा नया हूँ।

उत्तर

37

जावा में कोई उपनाम नहीं हैं। आप इस तरह अपनी कक्षा के साथ HashMap वर्ग का विस्तार कर सकते हैं:

public class TheNewType extends HashMap<String, String> { 
    // default constructor 
    public TheNewType() { 
     super(); 
    } 
    // you need to implement the other constructors if you need 
} 

लेकिन ध्यान रखें कि यह एक वर्ग यह एक ही नहीं होगा आप लिखते ही HashMap<String, String>

+3

@Lee - प्रकार के बारे में KARASZI István की चेतावनी महत्वपूर्ण है - देखना http://www.ibm.com/developerworks/java/library/j-jtp02216/index.html – McDowell

+0

धन्यवाद आप। मैं इस पल के लिए इसका उपयोग कर रहा हूँ। यह बहुत मदद करता है। – Lee

+1

जेनेरिक के साथ आप एक वैकल्पिक चाल/हैक कर सकते हैं: http://stackoverflow.com/questions/5604390/how-do-i-create-some-variable-type-alias-in-java/27536347#27536347 –

0

जावा में ऐसा कुछ भी नहीं है। आप आईडीई टेम्पलेट्स या स्वत: पूर्णता के साथ कुछ करने में सक्षम हो सकते हैं, और जावा 7 में generics type inference (0) के लिए तत्पर हैं।

8

वहाँ में कोई typedef बराबर है हो जाएगा जावा, और एलियासिंग प्रकारों के लिए कोई आम मुहावरे नहीं है। मैं आप की तरह

class StringMap extends HashMap<String, String> {} 

कुछ कर सकते हैं लगता है, लेकिन यह आम नहीं है और एक कार्यक्रम मेंटेनर को स्पष्ट नहीं किया जाएगा।

+3

+1 - और यह एक नया प्रकार है जो एक प्रकार का उपनाम नहीं है। –

+0

ध्यान रखें कि आपको अपने उप-वर्ग के लिए सीरियलज़ेबल इंटरफेस के लापता विवरण को लागू करना चाहिए, क्या आपको यह करना चाहिए। अन्यथा, आप जिज्ञासा का सामना कर सकते हैं यदि आप कभी ऐसी स्थिति में भाग लेते हैं जहां आपको अपनी वस्तु को क्रमबद्ध करने की आवश्यकता होती है। मदद के लिए – nasukkin

0

निकटतम एक के बारे में सोच सकता है, ताकि

class NewType extends HashMap<String, String> { 
    public NewType() { } 
} 

मैं वास्तव में चाहते हैं जावा एक ध्वनि प्रकार अलियासिंग विशेषता थी की तरह एक आवरण वर्ग बनाना है।

+0

धन्यवाद। यह बहुत मदद करता है। – Lee

7

हालांकि जावा इसका समर्थन नहीं करता है, आप इसे अनुकरण करने के लिए जेनेरिक चाल का उपयोग कर सकते हैं।

class Test<I extends Integer> { 
    <L extends Long> void x(I i, L l) { 
     System.out.println(
      i.intValue() + ", " + 
      l.longValue() 
     ); 
    } 
} 

स्रोत: http://blog.jooq.org/2014/11/03/10-things-you-didnt-know-about-java/

+2

मुझे यकीन नहीं है कि आप ओपी से नफरत क्यों करते हैं और चाहते हैं कि वह सहकर्मियों द्वारा मृतक के लिए तैयार हो जाए – shabunc

संबंधित मुद्दे