繁体   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