java - Why is upcasting a Class considered an unsafe operation? -


class कास्ट करते समय जावा कम्पाइलर एक "अनचाहे डाली" चेतावनी क्यों चालू करता है? ऑब्जेक्ट & gt; से क्लास & lt; ऑब्जेक्ट & gt; को बढ़ाता है? यह कैसे संभवतः असफल हो सकता है?

ऐसा कोई कलाकार केवल सामान्य रूप से सुरक्षित नहीं है सामान्य में , और तथ्य यह है कि यह वर्ग वर्ग के लिए सुरक्षित है। इस तरह से एक वर्ग की कल्पना करें:

  // हाइफोटीटीकल! क्लास मायक्लास & lt; T & gt; वर्ग & lt; T & gt; {सार्वजनिक टी कुछ अंतर; }   

अब, यदि प्रश्न में डालने की अनुमति दी गई थी, तो आप

  MyClass & lt; Integer & gt; MyClassWithInteger = नया MyClass & lt; पूर्णांक & gt; (); MyClassWithInteger.someInstance = someInteger; // यह मान्य MyClass & lt ;? वस्तु & gt; फैली हुई है MyClassWithWildcard = myClassWithInteger; // यह मान्य नहीं है, लेकिन मान लें कि यह था: MyClass & lt; Object & gt; MyClassWithObject = myClassWithWildcard; // यह मान्य होगा, क्योंकि 'कुछ इन्स्टेंस' प्रकार 'ऑब्जेक्ट' का था, यहाँ myClassWithObject.someInstance = "someString"; // यह मान्य है लेकिन अनियंत्रित कलाकारों के माध्यम से, हमने चुपचाप / इस घटना के रूप में एक STRING में चुपचाप किया। तो यह असफल हो जायेगा: पूर्णांक I = myClassWithInteger.someInstance;   

आपने टिप्पणी में पूछा:

क्या आप कह रहे हैं कि भाषा लेखकों को कक्षाओं की तरह सुरक्षित वर्गों के लिए विशेष उपचार से बचना चाहिए बोर्ड?

हां महत्वपूर्ण मुद्दा यह है कि इस तरह का एक कलाकार सुरक्षित है या नहीं यह सवाल है कि कक्षा के शब्दों पर निर्भर करता है सुरक्षा का पता नहीं लगाया जा सकता है वाक्यविन्यास

Comments

Popular posts from this blog

asp.net - Procedure or function "Procedure name" expects a parameter "Param name" which was not supplied occurs rarely -

c++ - Redefined variable in the other module -

c# - The item with identity 'Id' already exists in the metadata collection. Parameter name: item -