मेरे पास ऑब्जेक्ट्स की एक सूची है जो बेस क्लास से बढ़ती है। अब मैं केवल सूची में कक्षाओं के एक उदाहरण पर एक विशिष्ट संचालन लागू करना चाहता हूं।उदाहरण के लिए एक अच्छा अभ्यास है?
क्या instanceof
का उपयोग एक अच्छा अभ्यास है? या मुझे वस्तुओं को अलग करना चाहिए जैसे कि कस्टम enum
?
abstract class Base;
class Foo extends Base;
class Bar extends Base;
List<Base> bases;
for (Base base : bases) {
if (base instanceof Bar.class) {
//execute my custom operation on the base object
doSomething((Bar) base);
}
}
यदि यह दृष्टिकोण सामान्य रूप से अच्छा नहीं है, तो मैं बेहतर कैसे कर सकता हूं?
पॉलिमॉर्फिज्म का उपयोग करें; यही कारण है कि यह मौजूद है। –
बिल्कुल - करने के बजाय कुछ (बेस) - आपको कुछ आधार लागू करना चाहिए। कुछ(), जो foo.do कुछ() में ओवरराइड है। Google polymorphism जावा - या - ओवरराइड विधि जावा। –
मुझे यह विशेष उत्तर पसंद है: http://www.javapractices.com/topic/TopicAction.do?Id=31। मुझे एहसास है कि सी ++ और जावा अलग हैं लेकिन ** "जब भी आप स्वयं को फॉर्म के कोड लिखते हैं", यदि ऑब्जेक्ट टी 1 प्रकार है, तो कुछ करें, लेकिन यदि यह टी 2 टाइप है, तो कुछ और करें, "खुद को थप्पड़ मारो। * * – thang