![](/img/trans.png)
[英]java: how to call a method on arraylist without knowing the type of object
[英]How do I implement a method that returns in Java without knowing what object type I'm returning?
我在使用Python一年后回到Java,所以我試圖記住一些涉及的語法/設計技術。 在這樣做的過程中,我將返回並實現我之前課程中的每個項目,僅限於Java ...但我已經停留在實現一個簡單的Stack上了。 這是因為當我不知道我正在返回什么類型的對象時,我不確定如何編寫方法簽名,即在pop()方法中。 insert()方法也存在同樣的問題,因為我不知道作為參數傳遞了什么類型的對象。 在Python中,沒有必要在方法簽名中顯式聲明對象類型,因此這讓我感到困惑。
我是否必須為每種可能的參數/返回值類型編寫單獨的方法,或者是否有某種解決方法?
你可以像這樣寫:
public interface Stack
{
void push(Object o);
Object pop();
}
或者您可以使用泛型:
public interface Stack<T>
{
void push(T o);
T pop();
}
如果你的目的不是自己編寫,你可以使用Java內置的:
public Object pop();
。
Object是每個類繼承的基類。
也就是說,雖然這種簽名有其優點,但在許多情況下更好的方法是類型安全的東西,即popInt(),popString()等 - 畢竟,調用代碼需要將Object轉換為事情,更糟糕的是,它需要根據通常使用多態性做得更好的事情做出決定。
我不知道你的設置,所以Object pop()
可能只是你的票。
編輯:或使用泛型,如duffymo專業演示。
Java支持泛型,並允許您參數化要存儲的類型。 所以在你的情況下它會是這樣的。 在這里閱讀更多內容
public class Stack<T>
{
List<T> items=new ArrayList<T>();
public T push(T item) {...}
public T pop() {...}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.