<small id='VL7Xt6T'></small> <noframes id='D1Wj3'>

  • <tfoot id='g6rO9n8H'></tfoot>

      <legend id='ORrY5C'><style id='DF9A1u'><dir id='AwfW2Fm4'><q id='v8Hr475EG'></q></dir></style></legend>
      <i id='yf7Bs5'><tr id='B6nOsFPH4J'><dt id='V1fM'><q id='BU2sAq9vDE'><span id='1SYjgN'><b id='CYw3'><form id='taiu'><ins id='G1f0H'></ins><ul id='lYnOm'></ul><sub id='m41h06qT'></sub></form><legend id='hVed0zp'></legend><bdo id='kM0FcPA'><pre id='Q5chMUaq'><center id='bC72DTNlq'></center></pre></bdo></b><th id='6CRoAV'></th></span></q></dt></tr></i><div id='n0Y3KM28J'><tfoot id='HxPlUtO'></tfoot><dl id='XdjJkK'><fieldset id='tDZdl'></fieldset></dl></div>

          <bdo id='27A6'></bdo><ul id='F7btKh'></ul>

          1. <li id='aFtV1M'></li>
            登陆

            看似简略,在JAVA中如何将一个Object转换成Array

            admin 2019-05-16 285人围观 ,发现0个评论

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

            (需求成果的请直接看最终)

            那么这个问题的来历是这样的

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

             select username from user where id in (:id) 

            然后设置参数的时分,hibernate要求这个参数为Array(Object[])或许List(Collection

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

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

             List l = new ArrayList();
            l.add("ss1");
            l.add("ss2");
            l.add("ss3");
            l.add("ss4");
            l.add("ss5");
            String[] sarr = new String[l.size()];
            l.toArray(sarr);

            for (Object string : (Object[])sarr) {
            System.out.println(string);
            }

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

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

            如果是这样,那我还写这个文干啥?

            所以,留意:

             List l = new ArrayList();
            l.add("ss1");
            l.add("ss2");
            l.add("ss3");
            l.add("ss4");
            l.add("ss5");
            String[] sarr = (String[])l.toArray();
            for (String string :看似简略,在JAVA中如何将一个Object转换成Array sarr) {
            System.out.println(stri看似简略,在JAVA中如何将一个Object转换成Arrayng);
            }

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

            在我看似简略,在JAVA中如何将一个Object转换成Array机器上履行成果(jdk7):

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

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

            综上,String[]能够转成Object[],可是反过来就不可

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

            第一步,确认传入的这个Object是一个Array

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

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

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

            import java.lang.reflect.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);
            }
            }

            以上

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP