Java中有没有办法实现这个方法?
public static <T extends Number> T doubleOf(T number){
//I don't know...
}
Thanks
正如其他答案中提到的,没有通用的解决方案。
除此之外,您想要实现的操作对于某些操作可能没有明确定义Number
子类。例如,的倍数是多少AtomicInteger
?它是具有相乘值的同一个实例吗?或者一个新的实例AtomicInteger
?或者新的平原Integer
?理论上,可能存在一个子类Number
这不允许自由创建新实例。
您可以测试一些已知子类的输入并为这些子类实现操作。像这样的事情:
@SuppressWarnings("unchecked")
public static <N extends Number> N multiply(N number, int multiplier) {
Class<? extends Number> cls = number.getClass();
if (cls == Integer.class) {
return (N) Integer.valueOf(number.intValue() * multiplier);
}
if (cls == Long.class) {
return (N) Long.valueOf(number.longValue() * multiplier);
}
throw new UnsupportedOperationException("unknown class: " + cls);
}
恐怕有必要以某种形式压制警告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)