如何在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