2013-04-20 5 views
8

मैं commons-chainजावा विधि हस्ताक्षर में वापसी प्रकार में कीवर्ड फैली

के कोड के माध्यम से जा रहा था मैं जैसी विधि हस्ताक्षर का एक बहुत पाया इस एक:

public <CMD extends Command<K, V, C>> CMD getCommand(String commandID)

इस हस्ताक्षर किसी भी क्या भिन्नता है से:

public Command getCommand(String commandID)

केवल तार्किक कारण मैं समझ सकता है कि प्रकार की जांच करना था। लेकिन मैं अभी भी डिजाइन के दृष्टिकोण से ऐसा करने का कारण नहीं समझ पाया।

क्या कोई और कारण है कि कोई इसका उपयोग क्यों करेगा और जावा विधि के बदले में बढ़ाता है?

उत्तर

4

अंतर तीन गुना है:

  1. प्रकार लौटाया टाइप किया (नहीं एक कच्चे प्रकार) है
  2. प्रकार लौटे एक विशिष्ट उपवर्ग
  3. विधि प्रकार की पहुंच है हो सकता है कश्मीर, वी और सी

और एक टाइप विधि जा रहा है, जावा प्रकार अनुमान लगा सकते हैं

सभी इसका मतलब है कि यह (डाले बिना) संकलन होगा:

Command<String, Integer, String> x = getCommand(commandID); 

या

SomeTypedSubClassOfCommand x = getCommand(commandID); 

संकलक का अनुमान लगा होगा (यानी यह पता लगाने) चर के प्रकार के आधार विधि के लिए प्रकार परिणाम सौंपा जा रहा है।

Command<String, Integer, String> x = ContainingClass.<CommandSubClass<String, Integer, String>>getCommand(commandID); 
+0

धन्यवाद:

इसके अलावा, आप स्पष्ट रूप से इस सिंटैक्स के साथ उपवर्ग निर्दिष्ट कर सकते हैं। सिर्फ स्पष्टीकरण मैं देख रहा था। – shoubhik

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