मैं एक अंतरफलक बिगड़ने के रूप में, BaseObjectजावा - गुजर इंटरफ़ेस प्रकार की ArrayList
public class BaseObject implements Damageable
अब एक तृतीय श्रेणी में
public interface Damageable {
public void handleCollision(float impulse);
}
एक वर्ग जो इस इंटरफेस को लागू करता है इस प्रकार है, मैं का एक ArrayList है प्रकार बेसऑब्जेक्ट
public class ObjectManager {
public ArrayList<BaseObject> bodies;
जो मैं करने की कोशिश कर रहा हूं वह है कि ऐरेलिस्ट निकायों को दांत की विधि में पारित करना है एर वर्ग जो ArrayList
public CollisionManager(ArrayList<Damageable> _bodies) {
bodies = _bodies;
}
जावा स्वीकार करता है मुझे नए CollisionManager (शरीर) कर जहां शरीर प्रकार ArrayList के है नहीं करता है और BaseObject बिगड़ने
मैं कास्टिंग की कोशिश की है लागू करता है। कहते हैं कि ArrayList<BaseObject>
से ArrayList पर भी Class<? extends Damageable>
का उपयोग करने का प्रयास नहीं किया गया है, लेकिन फिर मैं इंटरफ़ेस में घोषित विधियों को कॉल करने में असमर्थ हूं। मैं ऐरेलिस्ट को कैसे पास कर सकता हूं?
की जांच: http://stackoverflow.com/questions/6965035/why-cant-a-method-take-a-collectionsubclass-when-the-methods-signature-is-de – SirPentor