gpt4 book ai didi

Java 简单泛型

转载 作者:行者123 更新时间:2023-12-03 20:25:04 25 4
gpt4 key购买 nike

如何使用 C++ 模板之类的函数替换这 2 个函数?

public void verify(final int[] array, final int v) {
for ( final int e : array ) if ( e == v || v == e ) return;
abort_operation();
}

public void verify(final double[] array, final double v) {
for ( final double e : array ) if ( e == v || v == e ) return;
abort_operation();
}

最佳答案

基本上,你不能。 Java 泛型不适用于原始类型。您可以通过反射(reflection)来做到这一点,但这会很丑陋。您也可以使用 boxed 类型来实现,如下所示:

public <T> void verify(T[] array, T value) {
if (!Arrays.asList(array).contains(value)) {
abortOperation();
}
}

...但这只适用于 Integer[]Double[],不适用于 int[]double [].

这就是为什么 Arrays类对 binarySearch 等方法有如此多的重载...如果您的方法可以通用,那么这些方法也可以。

从根本上说,泛型与 C++ 模板不同。它们涵盖了很多相同的用例,但它们并不相同,看到其中一个涵盖某些领域而另一个不涵盖您应该不会感到惊讶。

关于Java 简单泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23564810/

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