Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中读取数组变量_Java_Arrays - Fatal编程技术网

如何在Java中读取数组变量

如何在Java中读取数组变量,java,arrays,Java,Arrays,你好,我有以下问题 我有以下功能签名: public void doSomething(Object arg); 我使用以下代码段调用此函数: doSomething(new Object[] {this,"aString"}); 在doSomething方法实现中,如何读取调用时发送的数据(类名和字符串) public static void doSomething(Object arg) { if (arg instanceof Object[]) { O

你好,我有以下问题

我有以下功能签名:

public void doSomething(Object arg);
我使用以下代码段调用此函数:

doSomething(new Object[] {this,"aString"});
doSomething
方法实现中,如何读取调用时发送的数据(类名和字符串)

   public static void doSomething(Object arg) {

    if (arg instanceof Object[]) {
        Object[] list = (Object[]) arg;
        for (Object item : list) {
            System.out.println(item);
        }
    }

   }

这假设您总是将对象[]作为参数传递。

要检查传递的对象是否实际是数组,请使用

if(obj instanceof Object[]) ...
使用
arg.getClass().getSimpleName()
获取类名
arg.getClass()
获取完全限定的类名
arg.toString()
读取转换为字符串的数据


假设您已经跳过了toString()方法

您可以使用
instanceOf
方法内省传入的变量

arg instanceof Object[]
返回布尔值

或者通过调用
arg.getClass()


以字符串形式返回类名。

您可以执行以下操作:-

public void doSomething(Object arg){
      Object[] arr=(Object[])arg; // cast the arg into Object[] array
      Object obj=arr[0] ;// will return the object
      String s=(String)arr[1] ;// would return string (add a down-cast to string because that string object when added to array converts to the Object type)
      System.out.println(obj+" "+s);
}
如果你这样称呼它

doSomething(new Object[] {this,"aString"});
输出应该是这样的:-

Class@dce1387 aString

我总是这样做,但是有没有办法检查我是否将对象[]作为参数传递?如果(arg!=null&&arg.getClass().isArray()){…}我想Kris会为您@SteveSt回答这个问题。如果对您有效,您可以将此标记为正确答案吗?如果您总是通过
对象[]
(如您在一条注释中所述),请将方法签名更改为“public void doSomething(Object[]arg)”。假设arg是一个对象
Class@dce1387 aString