2012-06-21 27 views
1

如果可能的話,您可以從其他方法的return調用methodJava方法()。method()調用

例如...

class Example { 
    public static void main(String[] args) { 
     Point t1 = new Point(0,0); 
     Point t2 = new Point(0,1); 
     ArrayList pointContainer = new ArrayList(); 
     pointContainer.add(0,t1); 
     pointContainer.add(0,t2); // We now have an ArrayList containing t1 & t2 
     System.out.println(pointContainer.get(1).getLocation()); // The problem area 
    } 
} 

在寫得不好的例子,我試圖調用上的pointContainer指標1項的getLocation()方法(的java.swing.awt一部分)。

當試圖編譯程序,我得到以下錯誤...

HW.java:20: error: cannot find symbol 
     System.out.println(test.get(1).getLocation()); 
           ^
    symbol: method getLocation() 
    location: class Object 

可能有人請幫我解決這個問題。

+1

「*這裏是一個愚蠢的問題*」。可能不是問題標題*很明顯。 – Lion

+0

我希望這已經夠清楚了。我不確定哪些條款是谷歌或標籤,唉! –

+0

@KayDee我認爲獅子的觀點是你的問題標題可以回答你的問題。 'method()。method()'應該工作。 –

回答

4

首先,輸入您的ArrayList,以便Java可以知道對象是從哪裏來的。

List<Point> pointContainer = new ArrayList<Point>(); 

然後,你從ArrayList中檢索任何對象將是Point型的,這樣你就可以對其進行操作。

+0

太棒了,奇妙地工作。我在這些問題上的大部分搜索結果聽起來像另外僅限於簡單變量(int,String等) - 很好地知道情況並非如此。 :) –

1

在你的情況下,你需要對Point進行明確的轉換,然後調用預期的方法。否則,您需要按照@Makoto提到的以java泛型方式定義數組列表。

鑄造方法是

((Point)pointContainer.get(1)).getLocation()

+0

這次我會堅持Makoto的解決方案 - 但我會牢記以備將來參考,謝謝。 –

+0

是的,你必須堅持使用泛型。剛纔提到這也是一種方式。 – raddykrish