??使用Mybatis框架的時(shí)候,想封裝一個(gè)底層JDBC控制器,用于提供和Mybatis交互的增刪改查接口(公用的接口),但由于公用的查詢方法可能是用戶自定義的任意一個(gè)和表對(duì)應(yīng)的java bean類型,所以要考慮怎么樣給調(diào)用者返回正確的返回值類型,不需要調(diào)用者自己強(qiáng)轉(zhuǎn)型的動(dòng)作(例如:返回Object類型給調(diào)用者,那么調(diào)用者就需要拿到這個(gè)Object類型進(jìn)行強(qiáng)轉(zhuǎn)型為表對(duì)應(yīng)的java bean類型)。
解決方案:
可以說(shuō)java提供的泛型 T 是非常實(shí)用強(qiáng)大的一個(gè)特性,雖然說(shuō)它是假的泛型(相對(duì)于C里面的泛型),我們可以考慮將方法的返回值設(shè)為泛型,因?yàn)榉盒褪窃谶\(yùn)行時(shí)才確定真正的類型,而并非在編譯時(shí)。
例子:
1. 服務(wù)提供者 函數(shù):?
//通過(guò)<T>聲明告訴JVM返回值定義一個(gè)泛型 T ???????
這里的T只是個(gè)占位符的效果,26個(gè)字母隨便寫(xiě)哪個(gè)字母都可以,但一定要是和< >里面相同的字母,這里使用T
public <T> T findList(String sqlID,Map<String,Object> params) {
String statement = "com.mybatis.mapping.userMapper."+sqlID;//映射sql的標(biāo)識(shí)字符串
return (T) this.session.selectList(statement, params);
}
2. 服務(wù)調(diào)用者 函數(shù):
//這里接收的類型聲明直接寫(xiě)真實(shí)的類型就可以,無(wú)需強(qiáng)制轉(zhuǎn)換文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-459732.html
List<SubsHis> list = jdbc.findList("getSubsHisList", map);
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-459732.html
到了這里,關(guān)于java中的方法返回值使用泛型,實(shí)現(xiàn)靈活的返回值類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!