2012-12-06 39 views
8

एकाधिक सामान्य इंटरफ़ेस विभाजक: "," या "&""और" या "": क्या एक के बीच अंतर है और एक <टी I1 और I2 फैली><टी I1 फैली हुई है, I2>

मैं हमेशा A<T extends I1, I2> का उपयोग कर रहा था लेकिन आज, मैंने A<T extends I1 & I2> देखा। इन दो नोटेशन के बीच क्या अंतर है?

क्या इसका कोई अलग अर्थ है? उद्देश्य?

+0

विसंगति – irreputable

उत्तर

14
A<T extends I1, I2> 

दो पैरामीटर

  1. T के साथ एक प्रकार A जो I1
  2. I2

की एक उप-प्रकार आप के रूप में "एक < पूर्वसर्ग यह पढ़ सकते हैं होना चाहिए है > प्रकार टी जो I1 < प्रीपेशन > टी बढ़ाता है ype I2 मान टाइप करने के लिए तुलनीय प्रकार कुंजी से नक्शा "


A<T extends I1 & I2> 

एक एकल पैरामीटर

  1. T के साथ एक प्रकार A जिनमें से एक उप-प्रकार होना चाहिए कि", तो SortedMap<Key extends comparable, Value> एक है " I1 और I2

का एक उप प्रकार आप इसे "ए 012" के रूप में पढ़ सकते हैंपूर्वसर्ग > प्रकार टी जो I1 और I2 "तो एक SortedSerializableSet<T extends Serializable & Comparable> पढ़ा जा सकता है" प्रकार टी जो दोनों serializable और तुलनीय "

+0

आप ठीक कह रहे हैं की अच्छी पकड़ है के तत्वों में से एक क्रमबद्ध सेट फैली! मैं 'विस्तार' से परेशान था, जिसने मुझे लगता है कि I1 और I2 टी से जुड़े थे ... मुझ पर शर्म आती है ... – ncenerar

+0

यह भी ध्यान दें कि कॉमा (',') का उपयोग तब किया जाता है जब एक वर्ग एकाधिक इंटरफेस लागू करता है लेकिन '&' की अनुमति नहीं है ... यह भ्रमित है ... – ncenerar

+0

@ निकोलस कैनेरियो, मैं मानता हूं कि 'भ्रमित है। आदर्श रूप से प्रकार के हस्ताक्षरों में वे 'लागू' या पुन: उपयोग किए गए विराम चिह्न ('|') का उपयोग करते थे जो इस विचार को व्यक्त करते हैं कि आप बाएं हाथ के किनारों के सेट का विस्तार कर रहे हैं जो घोषित किए जा रहे प्रकार के मूल्यों को स्वीकार कर सकते हैं। –