gpt4 book ai didi

Java 通用类型编号

转载 作者:行者123 更新时间:2023-11-29 07:51:26 24 4
gpt4 key购买 nike

我已经阅读了几页关于泛型方法的内容并且对它们有了一定的了解,但我仍然不理解它们。假设我有一个方法可以将两个数字相乘并返回乘积:

public double multiply(SomeNumberVariableType x, SomeNumberVariableType y){
return x * y;
}

我如何使用有界泛型只允许一个数字类型作为参数?

最佳答案

也许这就是你的意图:

public static <N extends Number> double multiply(N x, N y){
return x.doubleValue() * y.doubleValue();
}

虽然我还必须说,通用使用 Number 而不是像 java primitive double 这样的具体不可变值类型可能不太健康,因为在上面的示例中,参数甚至可以是不同的类型,例如 Integer 和 Double。

注意:

我确认,参数可以是与上面给定的签名不同的类型。所以波西米亚人的答案是错误的。我刚刚测试过它(但之前已经知道了)。编译器只保证两个参数都是数字类型,没有别的。

为了断言相同的参数类型,编译器需要自引用泛型。 Number-class 没有实现此功能(不幸的是, > 是不可能的)。这就是为什么我认为整数方法不是很健康。这里有一段大家可以执行的测试代码:

Integer x = Integer.valueOf(10);
Double y = new Double(2.5);
System.out.println(multiply(x, y));
// Output: 25.0

关于Java 通用类型编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819824/

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