list.get(0)为什么是null的?

taotai120 2011-10-14 03:34:08
List<User> list = (List<User>)this.getHibernateTemplate().find("from User u where u.userName=?",user.getUserName());

System.out.println(list != null);
System.out.println(list.size() > 0);
System.out.println(list.get(0));

结果是System.out.println(list != null); 结果是true;
System.out.println(list.size() > 0); 结果是1
System.out.println(list.get(0)); 结果是null


请问一下,为什么 (list != null)是ture,(list.size() > 0是1)但是 list.get(0)取出来却是null的?
...全文
1450 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
qianmz 2011-10-14
  • 打赏
  • 举报
回复
我总结有两种可能:
1,也是可能性比较大的,就是list中有东西,但是list的第一个元素是null(java.util.List是可以存null的);
2,你的User的toString()方法被重写过
蓝黑十子星 2011-10-14
  • 打赏
  • 举报
回复
数据库里是不是没值啊!new list本身就不为空!list.size也就大于0!
gmogle 2011-10-14
  • 打赏
  • 举报
回复
不可能吧!!
luyun2011 2011-10-14
  • 打赏
  • 举报
回复
说不定存进去的是"null"字符串
list.get(0)就取出这个"null"字符串来了
CloudX2019 2011-10-14
  • 打赏
  • 举报
回复
debug一下,看list里面到底是个什么东西


taotai120 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xlsh456 的回复:]
我觉得这个问题 应该是hibernate的问题 你数据库没有主键吧?如果你数据库里有某列为空的话 就会导致整个对象为null 所以就出现了你说的那种现象。你可以把那列空值赋值看看 就可以验证是否是这么回事了。
[/Quote]
我把数据库里某列为空的填入数值,成功了,为什么这样的?我有主键的啊。。
taotai120 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hellonobody 的回复:]
引用 5 楼 taotai120 的回复:
引用 3 楼 hellonobody 的回复:
list.get(0)取出的是一个Object对象,需要强制转换成所需要的类型,比如你的User类型,你这样输出为null只能说明对象本身为null。。。。。可以按楼上说的试试

但是为什么System.out.println(list != null); 结果是true;??


是true……
[/Quote]
是true只能证明list对象本身不对空??什么意思啊?
taotai120 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xlsh456 的回复:]
我觉得这个问题 应该是hibernate的问题 你数据库没有主键吧?如果你数据库里有某列为空的话 就会导致整个对象为null 所以就出现了你说的那种现象。你可以把那列空值赋值看看 就可以验证是否是这么回事了。
[/Quote]

有主键啊。。。
xlsh456 2011-10-14
  • 打赏
  • 举报
回复
我觉得这个问题 应该是hibernate的问题 你数据库没有主键吧?如果你数据库里有某列为空的话 就会导致整个对象为null 所以就出现了你说的那种现象。你可以把那列空值赋值看看 就可以验证是否是这么回事了。
taotai120 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zh0134 的回复:]
引用 5 楼 taotai120 的回复:
引用 3 楼 hellonobody 的回复:
list.get(0)取出的是一个Object对象,需要强制转换成所需要的类型,比如你的User类型,你这样输出为null只能说明对象本身为null。。。。。可以按楼上说的试试

但是为什么System.out.println(list != null); 结果是true;??


这是是tr……
[/Quote]
没有>0的,就是 System.out.println(list.size() ); 结果是1
taotai120 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hellonobody 的回复:]
引用 9 楼 zh0134 的回复:
引用 8 楼 hellonobody 的回复:
是true只能证明list对象本身不对空,第二个打印结果为1证明list中存有东西,第三个打印结果才证明list中存的对象是否为空。。。


难道你不觉得第二个答应结果也应该是 true或者false么。。。。
怎么会打印出 1 来呢。。。


我以为打印的是list.size() ,刚才看到打……
[/Quote]
没有>0的,不好意思。。
艾小仙 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hellonobody 的回复:]

引用 9 楼 zh0134 的回复:
引用 8 楼 hellonobody 的回复:
是true只能证明list对象本身不对空,第二个打印结果为1证明list中存有东西,第三个打印结果才证明list中存的对象是否为空。。。


难道你不觉得第二个答应结果也应该是 true或者false么。。。。
怎么会打印出 1 来呢。。。


我以为打印的是list.size() ,刚才看到……
[/Quote]
对啊 LZ打错了?
gukuitian 2011-10-14
  • 打赏
  • 举报
回复
这有什么奇怪的吗,list里本来就可以放null的

List l=new ArrayList();
l.add(null);
System.out.println(l.get(0));
hellonobody 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zh0134 的回复:]
引用 8 楼 hellonobody 的回复:
是true只能证明list对象本身不对空,第二个打印结果为1证明list中存有东西,第三个打印结果才证明list中存的对象是否为空。。。


难道你不觉得第二个答应结果也应该是 true或者false么。。。。
怎么会打印出 1 来呢。。。
[/Quote]

我以为打印的是list.size() ,刚才看到打印的是list.size()>0?很奇怪。
楼主,是不是贴错了?
CloudX2019 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hellonobody 的回复:]
是true只能证明list对象本身不对空,第二个打印结果为1证明list中存有东西,第三个打印结果才证明list中存的对象是否为空。。。
[/Quote]

难道你不觉得第二个答应结果也应该是 true或者false么。。。。
怎么会打印出 1 来呢。。。
hellonobody 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 taotai120 的回复:]
引用 3 楼 hellonobody 的回复:
list.get(0)取出的是一个Object对象,需要强制转换成所需要的类型,比如你的User类型,你这样输出为null只能说明对象本身为null。。。。。可以按楼上说的试试

但是为什么System.out.println(list != null); 结果是true;??
[/Quote]

是true只能证明list对象本身不对空,第二个打印结果为1证明list中存有东西,第三个打印结果才证明list中存的对象是否为空。。。
nodream521 2011-10-14
  • 打赏
  • 举报
回复
get(0)打印出来是null?
CloudX2019 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 taotai120 的回复:]
引用 3 楼 hellonobody 的回复:
list.get(0)取出的是一个Object对象,需要强制转换成所需要的类型,比如你的User类型,你这样输出为null只能说明对象本身为null。。。。。可以按楼上说的试试

但是为什么System.out.println(list != null); 结果是true;??
[/Quote]

这是是true很正常

System.out.println(list.size() > 0); 结果是1
只是这个结果是1 就不正常了
taotai120 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hellonobody 的回复:]
list.get(0)取出的是一个Object对象,需要强制转换成所需要的类型,比如你的User类型,你这样输出为null只能说明对象本身为null。。。。。可以按楼上说的试试
[/Quote]
但是为什么System.out.println(list != null); 结果是true;??
taotai120 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lushuaiyin 的回复:]
User uu=(User)list.get(0);
System.out.println(user.getUserName());
试试
[/Quote]
System.out.println(user.getUserName());于User uu=(User)list.get(0);没关系的吧。。
加载更多回复(3)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧