gpt4 book ai didi

Java:在不改变其类型的情况下乘以泛型数字

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:08 25 4
gpt4 key购买 nike

Java有没有办法实现这个方法?

public static <T extends Number> T doubleOf(T number){
//I don't know...
}

谢谢

最佳答案

正如其他答案中提到的,没有通用的解决方案。除此之外,对于某些 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);
}

恐怕有必要以某种形式抑制警告。

关于Java:在不改变其类型的情况下乘以泛型数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com