मैं जावा में एक फ़ंक्शन के बारे में सोच रहा हूं, जिसे मैं आशा करता हूं। मैं एक एरेलिस्ट (कक्षा ए के बारे में कहता हूं) के माध्यम से पुन: प्रयास करना चाहता हूं, जिसमें कक्षा बी और सी की वस्तुएं शामिल हैं जो दोनों ए को बढ़ाती हैं। विचार, मैं केवल ऐरेलिस्ट में बी वर्ग की वस्तुओं (उदाहरण के लिए) के माध्यम से पुनरावृत्ति करना चाहता हूं।विस्तारित कक्षाओं के साथ Arraylist के माध्यम से इटरेटिंग
यह कैसे संभव है, नीचे दिए गए कोड में संक्षिप्त उदाहरण की तरह, और लंबे समय तक?
मुख्य वर्ग:
import java.util.*;
public class Test {
public static void main(String[] args) {
new Test();
}
Test() {
ArrayList<A> a = new ArrayList<A>();
a.add (new B());
a.add (new C());
a.add (new C());
a.add (new B());
a.add (new C());
for (A aObject : a) { // this works, I want it shorter
if (aObject instanceof B) {
B b = (B) aObject;
System.out.println (b.hi);
}
}
for (B b : a) // like this?
System.out.println (b.hi);
}
}
एक:
public class A {
}
बी:
public class B extends A {
String hi = "hi";
}
सी:
public class C extends A {
}
संपादित करें: क्योंकि बहुत से लोग इसका उत्तर देते हैं: मुझे उदाहरण के उपयोग के बारे में पता है। मैं सरणी, जिनमें से वर्ग बी
है में सभी वस्तुओं को लूप करने के लिए एक तेज़ तरीका चाहते
आपको सभी सूची के माध्यम से और सूची के प्रत्येक ऑब्जेक्ट के लिए यह जांचने के लिए है कि यह आपके इच्छित वर्ग का है या नहीं। आप नीचे दिए गए उत्तर में पहले से बताए गए कुंजीपटल "उदाहरण" में देखना चाहते हैं ... लेकिन मुझे डर है कि कोड आपके जैसा ही होगा (लेकिन दृष्टिकोण का उदाहरण बेहतर/क्लीनर है) – Pitelk
आपके द्वारा संपादित किए जाने से पहले प्रश्न यह स्पष्ट नहीं था कि आप क्या पूछ रहे थे। – JRSofty