0

在我的 java 项目中,我使用了两个堆栈,一个只保存双精度,另一个保存整数。

现在我想编写一个通用方法putToStack(element),它接受一个元素,它可以是双精度数或整数,并将其放入相应的堆栈。

我的问题是通用语法仍然存在一些问题。基本上我想要这个方法(请更正它!)有人可以帮我实现Java吗?

public void putToStack(Generic parameter) {
    if (isDouble(parameter)) {
        doubleStack.put(parameter);
    } else {
        integerStack.put(parameter);
    }
}
4

3 回答 3

2

如果您以后需要提取类型,那么将方法设为通用是没有意义的。使用重载方法,每个方法都采用您需要的类型。

public void putToStack(double parameter) {
    doubleStack.put(parameter);
}
public void putToStack(int parameter) {
    integerStack.put(parameter);
}
于 2013-08-13T17:04:01.843 回答
0

只需Object用作参数,因为它是所有类的父类,因此可以保存任何子类的对象:

public void putToStack(Object parameter)

注意:但请多考虑您的设计。

于 2013-08-13T17:02:53.730 回答
0

您不需要泛型,您正在寻找的是简单的多态性。

java.lang.Number 是 Integer 和 Double 的基类,所以它是最合适的。但是想想当有人试图在你的方法中添加一个 Float 时会发生什么?

在这种情况下,您希望重载该方法,以便只允许使用 double 和 int。这样你就可以避免这种情况,甚至删除那个丑陋的 if 语句。

public void putToStack(Double number) {
    doubleStack.put(parameter);
}
public void putToStack(Integer number) {
    integerStack.put(parameter);
}
于 2013-08-13T17:05:56.753 回答