gpt4 book ai didi

java - 如何在 Java 中将任何数组作为参数传递?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:48 26 4
gpt4 key购买 nike

我如何编写一个方法来接受任何类型(包括基元)的任何数组作为参数?

例如,我希望以下两个调用都能正常工作:

int[] intArray = {1, 2, 3};
String[] strArray = {"1", "2"};

hasSize(intArray, 3);
hasSize(strArray, 2);

到目前为止我得到的最接近的是:

public static <T> boolean hasSize(T[] array, int expectedSize)
{
return (array.length == expectedSize);
}

...但这不适用于原语。

最佳答案

除了 Object 之外,原始数组和对象数组不共享是基类。

所以唯一的可能性是接受一个对象并在方法内部检查它是否是一个数组

public static <T> boolean hasSize(Object x, int expectedSize)
{
return (x != null) && x.getClass().isArray() ?
java.lang.reflect.Array.getLength(x) == expectedSize :
false;
}

当然这也接受非数组,可能不是你想要的解决方案。

出于这个原因,JDK 主要为对象数组和原始数组提供相同的方法。

关于java - 如何在 Java 中将任何数组作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871121/

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