public class Generics {
public static <T> T increaseBalance (T amount){
//say I want to increase the amount here, put it into finalBalance and return
return finalBalance;
}
public static void main(String[] args){
System.out.println(increaseBalance (new Integer(10)));
System.out.println(increaseBalance (new Double(20)));
}
}
您好。我只是进入泛型和自动/拆箱。在这个简单的代码段中,我尝试向increaseBalance(T amount)
方法发送两个不同的对象,并希望将金额增加10并返回最终余额。怎么能实现这一目标?这将使我对泛型和自动/拆箱的理解更加清晰。非常感谢。
答案 0 :(得分:4)
遗憾的是,将+
运算符应用于通用类型T
并不容易。
您有两种选择:
或
如果选择重载,则可以为每种可能的参数类型实现两种方法。
public static Integer increaseBalance (Integer amount){
return amount + 10;
}
public static Double increaseBalance (Double amount){
return amount + 10;
}
如果你想坚持使用泛型方法,你必须检查参数类型然后进行强制转换。
public static <T extends Number> Number increaseBalance (T amount){
Number result = null;
if (amount instanceof Integer) {
result = new Integer((Integer) amount + 10);
} else if (amount instanceof Double) {
result = new Double((Double) amount + 10);
} else {
//do nothing
}
return result;
}