国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java基礎開發泛型類的詳解

java基礎開發泛型類的詳解

2022-02-17 14:58guoyp2126 Java教程

這篇文章為大家介紹了java基礎開發中泛型類的詳解,包括泛型的概念以及應用實例有需要的朋友可以借鑒參考下,希望能夠有所幫助

前言

在軟件開發中,有許多執行過程很類似,許多人使用復制粘貼完成功能,這種做法雖然編譯器不會報錯,但會使用波浪線給出提示,給以后的維護帶來了很大的隱患。這種情況開發人員通常根據需要成員抽取公用方法、公用類或使用繼承完成,提高了代碼的復用。但是,在一些特殊情況(如執行過程中會使用到對象,這些對象操作相同,但具體的模塊有有所區別),此時只能使用泛型完成代碼的復用。

泛型概念

所謂泛型就是將類型由原來的具體類型參數化,類似于方法中的變量參數,此時類型也定義成參數形式。這種參數類型可以用在類、接口和方法中,分別被稱為泛型類、泛型接口、泛型方法。在實際的編程過程中,通過泛型可以定義類型安全的數據結構(類型安全),而無須使用實際的數據類型(可擴展)。這能夠顯著提高性能并得到更高質量的代碼(高性能),因為您可以重用數據處理算法,而無須復制類型特定的代碼(可重用)

泛型類

在ArrayList類中,ArrayList里面能夠放各種對象,如String、Integer、pojo等,可以完成他們的add()、get()等,聲明時在聲名構造一個數組列表的時候用<>來說明這個容器里面放的是什么類型的東西,如ArrayList< String >代表是String集合,ArrayList就是一個泛型類,在這個類中,存放對象的類型是通過參數定義的,這個類就是泛型類。

由于一組操作的類型不同,我們不得不定義不同的函數,這樣會產生大量基本相同的代碼。程序員已經習慣了使用集合中的泛型類,實際上泛型更廣泛的應用在業務邏輯的處理。泛型類中定義了一組操作,這組操作中完成相同過程。

【例】:在SSM模式下多個模塊controller需要完成分頁信息獲取、按照名稱模糊查詢及按照行政區劃碼等條件的查詢等功能。每個模塊的controller中的需要訪問的services對象不同,可以設計一個泛型類來編寫相應代碼,避免出現大量的復制代碼。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class TemplateController<T extends IBaseService,E> {
    private Logger logger = LoggerFactory.getLogger(getClass());
    private T t;
    //調用時傳入T的對象
    public TemplateController(T obj){
        t=obj;
    }
 
    public R getList(Map<String, Object> params){
        try {
            String pageSize = params.get("pagesize").toString();
            String currPage = params.get("currpage").toString();
            String cName = params.get("CName").toString();
            String regionCode = params.get("regionCode").toString();
            long size = Long.parseLong(pageSize);
            long currPageNo = Long.parseLong(currPage);
            Page<E> page=new Page<>(currPageNo,size);
 
            //查詢省市時代碼截斷
            String  code = RegionCode.GetRegionCode(regionCode);
            PageUtils data = t.getList(page,cName,code);
            return R.ok().put("data", data);
        } catch (Exception e) {
            logger.debug("傳入數據出錯"+e.getStackTrace());
            return R.error("傳入數據出錯"+e.getMessage());
        }
    }
}

TemplateController<T extends IBaseService,E> 為泛型類,

定義了兩個類型參數,分別為<T,E>其中T為有界類型,限定為實現了IBaseService接口的類。
IBaseService定義了getList方法,在完成數據提取操作中調用。

IBaseService代碼如下:

?
1
2
3
4
public interface IBaseService<T> {
    //取分頁記錄
    PageUtils getList(Page<T> page, String cName, String regionCode);
}

泛型的使用,ArtBankController繼承泛型類,將注入的對象傳入泛型類中,執行代碼很簡單,

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RequestMapping("bank")
public class ArtBankController extends TemplateController<ArtBankService,ArtBankEntity> {
 
    @Autowired
    private ArtBankService jobArtBankService;
 
    public ArtBankController(ArtBankService jobArtBankService) {
        super(jobArtBankService);
    }
 
    //執行代碼簡單,只需調用父類的getList方法即可
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params){
        return this.getList(params);
    }
 }

業務中很多模塊都需要分頁、按照名稱模糊查詢及按照行政區劃查詢時,實現了代碼的復用

結論

大家已經很熟悉在集合類(map、list、set)中使用泛型,但是對于自身業務中的自定義的泛型類使用不多。在開發中只要圍繞著可擴展性、可維護性兩大主題,善于總結,不難發現泛型類的使用場景

以上就是java基礎開發泛型類的詳解的詳細內容,更多關于java基礎泛型類的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/guoyp2126/article/details/117909048?spm=1001.2014.3001.5501

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美午夜精品一区二区三区电影 | 91精品一区二区三区久久久久久 | 国产日韩欧美不卡 | 日韩不卡一区二区三区 | 极品国产精品 | 久久久久99精品国产片 | 精品国产乱码久久久久久影片 | 99re免费视频精品全部 | 一区二区三区免费看 | 欧美另类国产 | 久久精品亚洲精品 | 国产一区二区三区成人 | 国内精品一区二区三区 | 成人免费av | 黄色毛片免费网站 | 2018天天操 | 国产毛片视频 | 狠狠干五月天 | 国产精品99久久久久久久女警 | 免费在线一区二区 | 亚洲伦理影院 | 久久精品噜噜噜成人av农村 | 亚洲乱码国产乱码精品精的特点 | 性高湖久久久久久久久aaaaa | 亚洲精品久久久久一区二区三区 | 欧美成人激情视频 | 狠狠综合久久 | 欧美一区二区三区免费 | 亚洲欧美精品一区 | 国产精品v| 久草国产视频 | 亚洲二区视频 | 国产精品永久免费视频 | 国产欧美日韩一区 | 在线视频三级 | 亚洲午夜成激人情在线影院 | 色女人的天堂 | 168黄网| 国产色爱综合网 | 中文久久 | 高清在线一区二区 |