求助:JAVA 泛型类返回值为null

sunh_li 2010-11-18 08:44:37
public List<Magicmarket> getAllMagicFromMarket(int firstNmu, int maxNum)
{
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction transaction = session.beginTransaction();
try {
String hql = "from Magicmarket";
Query query = session.createQuery(hql);
query.setFirstResult(firstNmu);
query.setMaxResults(maxNum);
List list = query.list();
transaction.commit();
return list;
} catch (Exception exception) {
exception.printStackTrace();
if (transaction != null)
transaction.rollback();
}
return null;
}


上面的方法中,最后一行代码return null;有什么用啊,是不是多余的。谁知道的解答下,不甚感激!
...全文
810 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 1
如果不写的活。编译器是不通过的,你根本就执行不了代码。。。。。
RETURN NULL 也只是骗过编译器的一种方式。。。。。。只要你返回的类型和LIST 匹配。。。就可以。不一定非得是NULL。。。。。。。



这样你懂的不?
qq14017152 2010-11-20
  • 打赏
  • 举报
回复
楼上的各位已经给出了正解!
Elim-Zhang 2010-11-20
  • 打赏
  • 举报
回复
楼上的各位已经给出了正解!
lovebaylong 2010-11-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ghsau 的回复:]
没这么写过,一般都是把集合list写在try块外面去声明,在最后return list,这么写没什么用,具体用途就是设一个返回值,你可以试试把它去掉能不能通过编译!
[/Quote]

而且这行代码不能去掉,也就是说要么在catch块中或在最后有一个return 语句,否则编译不通过,会报程序必须要有返回值的。
lovebaylong 2010-11-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ghsau 的回复:]
没这么写过,一般都是把集合list写在try块外面去声明,在最后return list,这么写没什么用,具体用途就是设一个返回值,你可以试试把它去掉能不能通过编译!
[/Quote]

你说的这种写法是很多人的写法,但是是不对的,这只是我们程序员追求单入口单出口的程序结构,还是有点原来面象结构编程的习惯。

正确的应该是处理完了就马上返回,不去做这种单出口的限制,一个程序块其实是可以有多个出口的,而且在重构中这也是一个重要的重构项。

最后一行return null,就是在你的方法出异常后返回的,其实这行代码放到catch块中也是一样的效果。

最后提一个小小的问题,你这个方法只是个查询方法,为何要使用事务呢?事务可是很耗资源的,能不用就尽量不要去用,一般推荐所有的查询类方法都不要使用事务。

如果不使用事务,那这行代码List list = query.list();就尽量改成return query.list;尽量减少不必要的变量声明。
sunh_li 2010-11-18
  • 打赏
  • 举报
回复
我认为是这样的:首先执行try区块,如果没有异常,就return list;不再执行catch区块,也不执行return null;了,如果有异常就执行catch区块,最后执行return null;
不晓得是不是这样的。
这段代码是JspRun论坛的源代码。
xfxiongfeng 2010-11-18
  • 打赏
  • 举报
回复
上面的不鸟解,只鸟解 return null 是返回一个空值!
  • 打赏
  • 举报
回复
没这么写过,一般都是把集合list写在try块外面去声明,在最后return list,这么写没什么用,具体用途就是设一个返回值,你可以试试把它去掉能不能通过编译!
youfeng445 2010-11-18
  • 打赏
  • 举报
回复
如果查询时有异常发生,那么直接返回null
sunh_li 2010-11-18
  • 打赏
  • 举报
回复
没人知道吗,版主能不能解答下啊

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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