java中的方法返回值使用泛型,實現靈活的返回值類型



痛點:      使用Mybatis框架的時候,想封裝一個底層JDBC控制器,用於提供和Mybatis交互的增刪改查接口(公用的接口),但由於公用的查詢方法可能是用戶自定義的任意一個和表對應的java bean類型,所以要考慮怎么樣給調用者返回正確的返回值類型,不需要調用者自己強轉型的動作(例如:返回Object類型給調用者,那么調用者就需要拿到這個Object類型進行強轉型為表對應的java bean類型)。


解決方案:


可以說java提供的泛型 T 是非常實用強大的一個特性,雖然說它是假的泛型(相對於C里面的泛型),我們可以考慮將方法的返回值設為泛型,因為泛型是在運行時才確定真正的類型,而並非在編譯時。



例子:

1. 服務提供者 函數: 


//通過<T>聲明告訴JVM返回值定義一個泛型 T        

//// 這里的T只是個占位符的效果,26個字母隨便寫哪個字母都可以,但一定要是和< >里面相同的字母,這里使用T

public <T> T findList(String sqlID,Map<String,Object> params) {

String statement = "com.mybatis.mapping.userMapper."+sqlID;//映射sql的標識字符串

return (T) this.session.selectList(statement, params);
}



2. 服務調用者 函數:

//這里接收的類型聲明直接寫真實的類型就可以,無需強制轉換

List<SubsHis> list = jdbc.findList("getSubsHisList", map);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM