java中的方法返回值使用泛型,实现灵活的返回值类型

<div class="htmledit\_views"> <p><br></p> <p>痛点: &nbsp; &nbsp; &nbsp;使用Mybatis框架的时候,想封装一个底层JDBC控制器,用于提供和Mybatis交互的增删改查接口(公用的接口),但由于公用的查询方法可能是用户自定义的任意一个和表对应的java bean类型,所以要考虑怎么样给调用者返回正确的返回值类型,不需要调用者自己强转型的动作(例如:返回Object类型给调用者,那么调用者就需要拿到这个Object类型进行强转型为表对应的java bean类型)。</p> <p><br></p> <p>解决方案:</p> <p><br></p> <p><span></span>可以说java提供的泛型 T 是非常实用强大的一个特性,虽然说它是假的泛型(相对于C里面的泛型),我们可以考虑将方法的返回值设为泛型,因为泛型是在运行时才确定真正的类型,而并非在编译时。</p> <p><br></p> <p><br></p> <p>例子:</p> <p><span></span></p> <p>1. 服务提供者 函数:&nbsp;</p> <p><br></p> <p><span></span>//通过&lt;T&gt;声明告诉JVM返回值定义一个泛型 T &nbsp; &nbsp; &nbsp; &nbsp;</p> <p><span></span>//// 这里的T只是个占位符的效果,26个字母随便写哪个字母都可以,但一定要是和&lt; &gt;里面相同的字母,这里使用T</p> <p><span><span></span>public &lt;T&gt; T findList(String sqlID,Map&lt;String,Object&gt; params) {<br><span></span><br><span></span>String statement = "com.mybatis.mapping.userMapper."+sqlID;//映射sql的标识字符串<br><span></span><br><span></span>return (T) this.session.selectList(statement, params);<br><span></span>} </span></p> <p><br></p> <p><br></p> <p>2. 服务调用者 函数:</p> <p><span></span>//这里接收的类型声明直接写真实的类型就可以,无需强制转换</p> <p><span></span>List&lt;SubsHis&gt; list = jdbc.findList("getSubsHisList", map);<br><span></span><span></span></p> </div>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

sql:mysql:函数:TIMESTAMPDIFF函数实现TimeStamp字段相减,求得时间差

<divclass"htmledit\_views"id"content\_views"<p&nbsp;函数内指定是minute,则最终结果value值的单位是分钟,如果函数内指定为hours,则最终结果value值单位为小时。</p<preclass"has"name"code"<codeclass"hljssql"<

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid