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

标签 java arrays parameters

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

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

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/

相关文章:

数组中的 iOS Swift 访问字符串

r - 我们如何为 glmnet 指定自定义 lambda 序列

c++ - 将标志传递给方法的替代方法?

java.lang.OutOfMemoryError : allocLargeObjectOrArray: [B, 大小 4K

JavaScript 数组问题

php - 使用 PHP 组合键/值上的两个数组并输出组合数组

ruby-on-rails - 如何将 ActiveRecord 对象作为参数传递给 Rails 中的辅助方法

java - 如何对 <Integer, MyObject> map 进行排序

java - Apache Commons 配置文件导入文件

java - 如何在较大的表达式中匹配除冒号之外的任何字符(包括特殊字符)的字符串(前面没有反斜杠)?