在我的java项目中,我使用两个堆栈,一个只保存双精度数,另一个保存整数。
现在我想写一个泛型方法putToStack(element)
,它接受一个元素,它是一个double或一个整数,并将它放到相应的堆栈中。
我的问题是我仍然遇到通用语法的一些问题。基本上我想有这个方法(请更正!)有人可以帮助我实现Java吗?
public void putToStack(Generic parameter) {
if (isDouble(parameter)) {
doubleStack.put(parameter);
} else {
integerStack.put(parameter);
}
}
答案 0 :(得分:2)
如果您需要稍后提取类型,则无需使该方法具有通用性。使用重载方法,每种方法都采用您需要的类型。
public void putToStack(double parameter) {
doubleStack.put(parameter);
}
public void putToStack(int parameter) {
integerStack.put(parameter);
}
答案 1 :(得分:0)
只需使用Object
作为参数,因为它是所有类的父类,因此可以保存任何子类的对象:
public void putToStack(Object parameter)
注意:但请多考虑一下您的设计。
答案 2 :(得分: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);
}