数据库和list的问题,很奇怪呀

最近突然遇到一个很傻不明白的事情,图片说明这是我的数据库操作代码,然后图片说明我执行这段代码,为什么list.get(0)不是object数组而只是单纯的object变量,还有我如果想取得list里面具体的值该怎么办。不知道为什么我老取不出来而是取出来[Ljava.lang.Object;@33a11aee, [Ljava.lang.Object;@41f0d692]这样的东西

去看一下java泛型的概念;
[Ljava.lang.Object;@33a11aee, [Ljava.lang.Object;@41f0d692] 已经代表List里面的对象是Object数组(Object[])
因为数组的toString方法显示效果就是这样子的。
你要显示里面的元素,要自己实现toString方法。
因为list里面是Object[] 对象,所以可以强制类型转换 Object[] arr = (Object[])list.get(0);
可以用方法Arrays.toString(arr)显示里面的内容

 Object[] x = (Object[])list.get(0);
String s = x[0].toString();

你这样查不太好,可以把 id,orderno,name,factory,num,sdate,state这些字段封装到一个对象当中,查出来的list之后,直接强转成该对象,比如封装成Product对象,那么 Product product=(Product)list.get(0).想要什么东西,都可以直接操作对象拿出来就好了。


/**后台**/

    List<Transport> lists = new ArrayList<>(); 
    lists = dao.find(Sql,null);
    //可以直接把lists传给jsp遍历
    //后台取值:
    Transport transport = (Transport)lists.get(0);

/**前台**/

可以用foreach遍历list

    <c:foreach items="${lists}" var="ara">
        <c:out  value="$ara.id"/>
        <!-- the code you need -->
    </c:foreach>

像楼上一样 通过泛型 进行封装, List list = new ArrayList<>(); 由于是个数组list ,所以后台通过list[0].username 访问第一个people的属性值,
前台通过ajax 获取进行循环输出,或者 jsp 用jstl 标签或者是 structs2标签。

把结果转换一下不就成了
List list = new ArrayList();
while(rst.next()){
String[] data = new String[columNum];
int len = data.length;
for(int i =0; i<len; i++){
data[i] = rst.getObject(i+1).toString();
}
list.add(data);
}
String[] obj = (String[]) list.get(0);
System.out.println(obj[1]);