1
我有一個HashMap的問題。這個問題對於任何其他泛型(LinkedList等)都是一樣的。比方說,我有2類新:Java HashMap來存儲不同的對象
A類:
public class A {
public void aMethod() {
System.out.println("A");
}
B類,擴展答:
public class B extends A {
public void bMethod() {
System.out.println("B");
}
現在在main方法的類,我做一個HashMap來存儲這2個分類的實例:
import java.util.HashMap;
public class TestList {
public static void main(String[] args) {
//I'm making 2 objects representing A and B class:
A objA = new A();
B objB = new B();
// I'm making a HasMap storing A class objects, where I can
// also store B objects, because B is subclass of A
HashMap<String, A> myObjects = new HashMap<String, A>();
myObjects.put("objA", objA);
myObjects.put("objB", objB);
// using a method from class A is working fine on objA:
myObjects.get("objA").aMethod();
// but if I want to use a method from B class on objB
// I need to cast:
((B) myObjects.get("objB")).bMethod();
}
}
有沒有什麼方法可以將對象從不同類別存儲在一個HashMap中,不需要使用其他(擴展)方法進行投射?
我想使用:
myObjects.get("objB")).bMethod();
沒有鑄造。謝謝。
沒有投射,並調用任意方法?當然不是。這是Java的重點,明確避免不知道你在做什麼。 – 2014-10-03 13:36:28
如果您需要經常施放,也許這意味着您可以改進「A」和「B」類的設計。 – ericbn 2014-10-03 13:39:54