利用java反射机制实现动态向下转型

本文介绍了如何利用Java反射机制来实现动态向下转型,从而提高代码的复用性。通过一个通用方法`findHQLByField`,可以便捷地获取Hibernate实体中的任意字段,减少了重复代码。同时,文章也提到了反射技术的优缺点,提醒开发者在使用时要谨慎。
摘要由CSDN通过智能技术生成

 前段时间我在使用hibernate的时候突然想到一个问题:我经常要对数据库中某条记录中的某个字段读取后进行判断,一般正规的操作流程是先使用session.get方法读取这条记录,并将其保存进一个hibernate实体中,然后从实体中获取我所需要的字段进行比较。
   但是如果操作实在是繁琐,于是我在想如何能写一个通用方法,可以直接读取我所需某个表中的某个字段。但是当初尝试了几种方法都无法实现。最麻烦的地方是,因为我在调用该方法前该方法是不知道我需要实现的实体是哪个,也不知道获取的字段是哪个,也就是说程序需要动态的调用某个类和某个方法。后面由于工作比较紧张这个问题就搁置下来了。
   就在昨天我了解了下java的反射机制,它能够将传统的编译时所做的工作放到运行时处理。利用这个技术我发现可以很容易的解决我当初那个问题。
   我举个例子:假如我要通过hibernate从user表中读取name字段,传统做法是
   //......
   User user = session.get(User.class,user.getId());
   String name =user.getName();
   //.......
   这样做的麻烦在于如果我要读取Class表中的ClassName字段的话,那所有的代码都得从写,代码的复用率就很低了。
   现在我们采用java的反射技术写一个通用方法来解决这个问题
   //.....
   /**
     * @param clazz类,serializable主键,methodName方法名
     * @return 字段的值
     * @throws Exception
     */
  public Object findHQLByField(Class cla

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值