簡體   English   中英

如何在不知道我返回的對象類型的情況下實現一個在Java中返回的方法?

[英]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內置的:

http://www.docjar.com/docs/api/java/util/Stack.html

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM