马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间

按例应该先说一下这个问题的来历,由于有需求我才处理他

(需求成果的请直接看最终马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间)

那么这携程网机票查询个问题的来历是这样的

在某个不知名的小屁项目中,运用了Hibernate,在查询的时分,运用hql查询,设置查询条件的时分运用 in 办法 ,比方:

 se马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间lect username from user where id in (:id) 

然后设置参数的时分,hibernate马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间要求这个参数为Array(Object[])或许List(Collection

然后,由于我这个办法是通用的,所以这儿的参数是用一红尘诛仙个 Map 传入的,这就导致我在解析的时分必须将这个Object转换成Object[]

当然经过我的实践,这儿的处理办法其实很简单

 List l = new ArrayLis小米售后t();
l.add("ss1");
l.add("ss2");
l菲洛嘉.add("pencilss3");
l.add("ss4");
l.add("ss5");
String[] sarr = new String[l.size()];
l.toArray(sarr);

for (Object string : (Object[]马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间)sarr) {
System.out.println(string);
}

这个代码是能经过编译而且履行成功的

也就是说,我还转个皮啊。。。直接写就ok了……

如马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间果是这样,那我还写这个文干啥?

所以,留意:

 List l = new ArrayListpo();
l.add("ss1");
l.add("ss2");
l.add("ss3");
l.add("ss4");
l.add("ss5");
String[] sarr = (String[])l李家宝.toArray();
for (String string : sarr)力 {
System.out.print马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间ln(string);
}

这段代码履行是不成功的!

在我机器上履行成果(jdk7):

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;under

List中不带参的toArray办法回来的是Object[],而且不能直接转成String[]

综上,String[]可中餐厅以转成Object[],可是反过来就不可

现在回到我题目中的问题,上代码

第一步,确认传入的这个Ob瓶邪肉ject是一个Array

第二步,获取这个Array的长度

第三步,创立一个0755950509相同长度的数组(什么类型依据你的需求自定义,条件是能兼容,比方我的代码是写Object,不管是啥都能进去了)

第四步,挨个取出本来数组中杰克的元素放到新的数组中

import java.lang.reflect.Arra阳朔西街y
..马斯克,看似简略,在JAVA中如何将一个Object转换成Array,人世间............
if (obj.getClass().isArray()) {
int length = Array.getLength(obj);
Object[] os = 巴多胺new人和驴 Object[length];
for (int i = 0; i < os.length; i++) {
os[i] 通霸云= Array.get(obj, i);
}
}暖暖环游世界攻略

以经典gif上