在String... ids 这个2个参数中有3个值分别是1,2,3 我想买其中的一个参数去除掉怎么做?有人或许会说用list来去除,但是用list去除后怎么把list变成原来的可变参数???可变参数 list

解决方案 »

  1.   

    也没看懂
    WTF,一定要我输入6个字符
      

  2.   

    比如说有个方法public void say(String ... ids){}
    这里的参数从前天获得是1,2,3这时我想把这个ids中的一个参数去掉比如去掉1怎么去掉?
      

  3.   

    String ... ids和String[] ids一样都是数组。在初始化的时候长度已经定了。所以只能新开辟空间,重新定义一个数组,然后再重新赋值。
    public void say(String ... ids){
        String[] newIds = new String[2];
        System.arraycopy(ids, 0, newIds, 0, newIds.length);
        ids = newIds;
        // TODO
    }
      

  4.   

    锁雷写错了应该是System.arraycopy(ids, 1, newIds, 0, newIds.length);
      

  5.   

    你这样的话不要这么麻烦 用list能直接实现 ,关键问题我去除了可变数组里面的一个参数后最后还是一个可变数组.....
      

  6.   

    我在说一下我的情景吧。我的客户端有个方法需要的是可变参数public void a(String ...ids){};
    这个客户端的方法参数无法改变就是参数一要是可变参数,然后前台传来值后后期经过业务逻辑的处理要把这些值中的几个值去掉,就是把可变参数中的某几个值去除,不过最后还是要一个可变参数作为参数给客户端。好比list有remove方法,这个最后删除了某个元素不过最后还是一个list....
      

  7.   

    既然叫参数,那就该明白所谓可变只是针对当前参数定义而言。
    另外纠正一个错误,这不是可变数组,ids在运行时是定长的。所以调用say方法的时候直接把数组传过去就行,无论你传递的参数是有2位还是3位。