जेएलएस 8 cast expression में वर्णित AdditionalBound
को को को लैम्ब्डा अभिव्यक्ति या विधि संदर्भ के लिए छोड़कर इस्तेमाल किया जा सकता है?कास्ट एक्सप्रेशन में अतिरिक्त बाउंड का उपयोग
यह कहा जाता है, यह हो सकता है कि:
(ReferenceType {AdditionalBound}) UnaryExpressionNotPlusMinus
और कहा कि:
कास्टिंग संदर्भ का लक्ष्य प्रकार (§5.5) डाली अभिव्यक्ति है (द्वारा शुरू की गई .. ।) संदर्भ प्रकार टाइप और अतिरिक्त ऑपरउंड कास्ट ऑपरेटर में दिखाई देने वाले अंतरण प्रकार।
X x = (I1&I2) some_UnaryExpressionNotPlusMinus
युपीडी:
लेकिन मैं गैर -lambda या गैर -method-संदर्भ उदाहरण के साथ व्यावहारिक उदाहरण खोजने में असफल रहा हूँ, कुछ की तरह कहते हैं विशेष रूप से, यह
जैसे कुछ की अनुमति देता है, जहां ~
यूनरी ऑपरेटर है।
मुझे नहीं पता कि X
, I1
, I2
और UnaryExpression
इस मामले में क्या होना चाहिए।
युपीडी -2: @Jimmy टी के लिए धन्यवाद, वह
Object x = (Number&Serializable)~0;
के व्यावहारिक उदाहरण सामने आए हैं।
लेकिन गैर-अनावश्यक उदाहरण देखना अच्छा लगेगा, जहां इस कास्टिंग का अर्थ है।
युपीडी-3:
Object l1 = (Collection & Iterable) new ArrayList<>();
List l2 = (ByteList & Iterable) new ArrayList<>();
Collection l3 = (List & Iterable) new ArrayList<>();
मामले में जहां इस तरह के कास्टिंग समझदार होगा कल्पना नहीं कर सकता: के ऊपर इन सभी भाव संकलित अनुसार, लेकिन उन सभी को कोई मतलब नहीं है।
कूल, +1। लेकिन इस वर्ग कास्टिंग केस अनावश्यक है, कोई विचार जहां यह समझ में आता है? – Andremoniy
एक विधि कॉल करते समय कास्टिंग अधिक समझ में आता है। –
'method2 (~ 0); 'यहां भी काम करेगा – Andremoniy