java - 如何查找对象数组的类型

标签 java arrays

我有一个用例,其中数组作为对象传递。我必须在运行时找出数组的类型并生成相同类型的列表。

public class Test {

    public static Object getArray(Object value) {
        Object returnVal = value;
        if(value!=null && value.getClass().isArray()){
            returnVal = Arrays.asList(value).get(0);
        }
        return returnVal;
    }

    public static void main(String[] args) {
        int[] k = new int[]{1,2,3,4,43,4};
        Object val = getArray(k);
        // val should be 1st element of the array. So, val should be equal to 1.
    }
}

如果我运行以下代码,我将得到一个列表形式的结果,其中完整数组作为第一个元素。

我只需要返回数组的第一个元素。

传递的值可以是任何值,因此我无法更改返回类型。

最佳答案

我解决了你的问题:

import java.lang.reflect;

public static Object getArray(Object value){

    if (value != null && value.getClass().isArray()){
       return Array.getLength(value) == 0 ? null : Array.get(value, 0);
    }
    return value;
}

如果你确定数组的长度不能为零,你可以这样编写 return 语句:

return Array.get(value, 0);

关于java - 如何查找对象数组的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47573376/

相关文章:

arrays - PowerShell,Get-WinEvent -FilterHashTable ID 和数组的奇怪行为

javascript - 数组的元素和长度的值未定义(从 Firebase 获取时)

c++ - 在 typescript 中,如何编写一个函数来处理任意维数组(例如 :Array<number>, Array<Array<number>>,...)?

java - 在 2 个数组列表中添加属性

java - 如何检查javafx应用程序是否已经以编程方式运行?

java - Java错误处理时,catch Exception应该捕获所有异常还是单独捕获异常?

java - 在Java中使用Stax时出现空xml节点的问题

java - Java项目的自动分发

javascript - 停止 switch 方法内的嵌套 if 循环 | JavaScript

java - JAVA继承中的重写与重载