方法传入的参数类型可以是数组或对象,该怎么写

开源字符串 发布于 2014/06/18 22:07
阅读 1K+
收藏 0

更新数据库时,要求传入的第二个参数 类型可以是对象也可以是数组,下面这样写对吗

public static void saveData(String tablename, List<?> list) {

try {
if (null == tablename || null == list || list.size() == 0) {
System.err.println("参数检查不通过");
return;
}
String classStr = list.get(0).getClass().getName();
for (Object obj : list) {
if (!classStr.equals(obj.getClass().getName())) {
System.err.println("对象序列类型一致性检查不通过");
return;
}
}

加载中
0
憨厚的瓜
憨厚的瓜

你可以写成这样

void saveData(String tableName, List<?> items){
        saveData(tableName, items.toArray());
    }
    
    void saveData(String tableName, Object[] items){
        // TODO .......
    }

PS: 看你这个样子是想弄个数据库的中间件?为啥不使用现成的ORM框架?

0
憨厚的瓜
憨厚的瓜

List 接受不了数组参数

比较简单的方案还是建议你使用方法重载

0
开源字符串
开源字符串

引用来自“憨厚的瓜”的评论

List 接受不了数组参数

比较简单的方案还是建议你使用方法重载

(String tablename,Object obj)

这样子可以吗

0
憨厚的瓜
憨厚的瓜

引用来自“憨厚的瓜”的评论

List 接受不了数组参数

比较简单的方案还是建议你使用方法重载

引用来自“w7573992”的评论

(String tablename,Object obj)

这样子可以吗

可以,不过处理判断起来很麻烦,不如重载方法来的爽利
0
mingshun
mingshun
如果要在同一个方法实现就只能用反射了。
0
开源字符串
开源字符串

引用来自“憨厚的瓜”的评论

你可以写成这样

void saveData(String tableName, List<?> items){
        saveData(tableName, items.toArray());
    }
    
    void saveData(String tableName, Object[] items){
        // TODO .......
    }

PS: 看你这个样子是想弄个数据库的中间件?为啥不使用现成的ORM框架?

头儿分配的任务,小弟只能接受照办,,
0
开源字符串
开源字符串

引用来自“mingshun”的评论

如果要在同一个方法实现就只能用反射了。
可以吗,能否具体说下,,,我也本打算用反射,但在用的时候感觉不能同时用对象或数组,两者不能兼顾,,
0
安西都护府首席程序员
安西都护府首席程序员
public static void saveData(String tablename, Object...objects) 
{
  //
}



    这样写在传入的时候不就可以传数组和对象了吗
0
开源字符串
开源字符串

引用来自“我是党卫军”的评论

public static void saveData(String tablename, Object...objects) 
{
  //
}



    这样写在传入的时候不就可以传数组和对象了吗
这种方法我没有试,刚才用楼上说的重载的方法解决了,,不过看起来比那个重载的方式更好用O(∩_∩)O~
0
开源字符串
开源字符串

引用来自“我是党卫军”的评论

public static void saveData(String tablename, Object...objects) 
{
  //
}



    这样写在传入的时候不就可以传数组和对象了吗

 如果要求那个List<>里面是个对象,该对象可能是个javabean,也可能是一个数组,那又该怎么办?

返回顶部
顶部