日期:2014-05-19  浏览次数:20802 次

java ....什么意思啊
Integer ... ids

public void deleteall(Integer ... ids) {
if (ids.length > 0) {
StringBuffer sb = new StringBuffer();
for (Integer id : ids) {
sb.append("?").append(",");
sb.deleteCharAt(ids.length);
}
SQLiteDatabase data = db.getWritableDatabase();
data.execSQL("delete from coursetime where id in(" + sb.toString() + ")", (Object[])ids);
data.close();
}

}


----------------
请问这里的Integer ... ids 是什么东东呀

------解决方案--------------------
ids 是个Integer 数组把
------解决方案--------------------
这个是java JDK1.5的新特性,叫做 可变参数。
处理那参数就是处理数组一样
这参数可以为0个或多个这类型的参数对象
------解决方案--------------------
是自动打包自动解包吧就是会自动转成int
------解决方案--------------------
探讨
这个是java JDK1.5的新特性,叫做 可变参数。
处理那参数就是处理数组一样
这参数可以为0个或多个这类型的参数对象

------解决方案--------------------
java JDK1.5的新特性,叫做 可变参数
简单说就是,你使用这个方法时,不管传入的数组的长度是多少,都可以调用这个方法。
------解决方案--------------------
JDK1.5之后的可变参数,由于JDK1.5之前都是用数组来表示,为了兼容JDK1.5之前的版本,可变参数内部还是会采用数组的形式来进行处理。
------解决方案--------------------
Integer ... ids表示实参可以是可变的列表,比如
Java code

public static void main(String[] args) {
        fun(1,2);
        fun(1,2,3);
    }
    
    public static void fun(Integer... str){
        System.out.println(str.length);
    }

------解决方案--------------------
public void deleteall(Integer ... ids) {
}
相当于
public void deleteall(Integer id1,Integer id2,Integer id3){
}
其中(Integer id1,Integer id2,Integer id3)这些参数个数是可变的,你这个方法如果执行deleteall(1,2)则表示删除id为1和2两条记录,如果执行(3,4,5)则表示删除id为3、4和5这三条记录,里面的参数个数可以使很多个的。
------解决方案--------------------
public static void deleteall(Integer ... ids){
String s="";
for(Integer id:ids){
s+=id+",";
}
if(!s.equals(""))
s=s.substring(0, s.lastIndexOf(","));
String sql="delete from table where id in ("+s+")";
....
}

------解决方案--------------------
上面的方法就是你所要的操作了
------解决方案--------------------
增强型for循环