最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java靜態(tài)泛型使用方法實(shí)例解析

 更新時(shí)間:2020年06月08日 09:17:00   作者:Panther1942  
這篇文章主要介紹了Java靜態(tài)泛型使用方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言:當(dāng)工具類對(duì)多個(gè)模型類進(jìn)行排序,比較等操作的時(shí)候,需要書(shū)寫(xiě)大量重復(fù)代碼,因?yàn)閼腥丝傄朐趺词∈碌?,所以考慮使用泛型這個(gè)玩意簡(jiǎn)化代碼

案例:當(dāng)前存在兩個(gè)模型類,F(xiàn)ruit和Person,他們都需要排序方法而且業(yè)務(wù)邏輯各不相同,因此需要分別寫(xiě)兩個(gè)排序方法,但因?yàn)榕判蛳嗤牡胤教?,唯一的區(qū)別就是判斷兩個(gè)對(duì)象的大小關(guān)系,于是在此做簡(jiǎn)化操作。

執(zhí)行步驟:

1、編寫(xiě)模型類接口 interface Model

 public interface Model<T> {
   public int compareTo(T model);
 }

這里僅需要定義一個(gè)比較的方法

2、編寫(xiě)Person類 class Person

public class Person implements Model<Person> {
  private String name;

  public Person(String _name) {
    this.name = _name;
  }

  @Override
  public int compareTo(Person _person) {
    return this.name.compareToIgnoreCase(_person.name);
  }
}

Fruit的代碼我就不放上來(lái)了,因?yàn)闉榱伺e例我這倆的比較方法寫(xiě)的是一樣的,但是實(shí)際業(yè)務(wù)代碼可能是不一樣的

3、編寫(xiě)工具類 class Sort

public class Sort {

  public static <T extends Model<T>> void sort(List<T> list) {
    for (int i = 0; i < list.size() - 1; i++) {
      for (int j = i; j < list.size(); j++) {
        if (list.get(i).compareTo(list.get(j)) > 0) {
          T swap = list.get(i);
          list.set(i, list.get(j));
          list.set(j, swap);
        }
      }
    }
  }
}

隨便找了個(gè)排序算法就套進(jìn)去了

然后就是主函數(shù)的調(diào)用

public class Main{
  public static void main(String[] args){
    LinkedList<Person> list = new LinkedList<>();
    list.add(new Person("admin"));
    list.add(new Person("root"));
    list.add(new Person("huawei"));
    list.add(new Person("cisco"));
    Sort.sort(list);
    for (Person item : list) {
      System.out.println(item.toString());
    }
  }
}

4、Fruit類只要按照Person類一樣實(shí)現(xiàn)Model的compareTo方法就可以使用Sort.sort方法進(jìn)行排序了

后記:最開(kāi)始我的想法是寫(xiě)個(gè)Model接口,在接口中寫(xiě)一個(gè)compareTo方法,然后形參類型不知道咋寫(xiě)了

如果寫(xiě)Model的話,Person實(shí)現(xiàn)compareTo方法的時(shí)候形參類型也肯定是Model

我這塊的邏輯比較簡(jiǎn)單,用name字段進(jìn)行比較,如果在Model接口加上getName方法后,怎么看都不舒服

Model類不一定都有name字段,而且這樣Person類就可能會(huì)與Fruit類進(jìn)行比較

雖然可以在邏輯上不這么搞,但是怎么都看得難受啊,于是就想到用泛型搞這玩意

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot啟用GZIP壓縮的代碼工程

    SpringBoot啟用GZIP壓縮的代碼工程

    經(jīng)常我們都會(huì)與服務(wù)端進(jìn)行大數(shù)據(jù)量的文本傳輸,例如?JSON?就是常見(jiàn)的一種格式,通過(guò)?REST?API?接口進(jìn)行?GET?和?POST?請(qǐng)求,可能會(huì)有大量的文本格式數(shù)據(jù)提交、返回,壓縮和解壓在提升網(wǎng)絡(luò)帶寬的同時(shí),會(huì)帶來(lái)?CPU?資源的損耗,本文介紹了SpringBoot啟用GZIP壓縮的代碼工程
    2024-08-08
  • java實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布游戲

    java實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布游戲

    這篇文章主要介紹了java實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • spring集成mybatis實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離

    spring集成mybatis實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離

    本文通過(guò)實(shí)例代碼給大家介紹了spring集成mybatis實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫(xiě)分離,需要的朋友可以參考下
    2017-08-08
  • ArrayList和LinkedList的區(qū)別、擴(kuò)容機(jī)制以及底層的實(shí)現(xiàn)方式

    ArrayList和LinkedList的區(qū)別、擴(kuò)容機(jī)制以及底層的實(shí)現(xiàn)方式

    這篇文章主要介紹了ArrayList和LinkedList的區(qū)別、擴(kuò)容機(jī)制以及底層的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java異常繼承何類,運(yùn)行時(shí)異常與一般異常的區(qū)別(詳解)

    java異常繼承何類,運(yùn)行時(shí)異常與一般異常的區(qū)別(詳解)

    下面小編就為大家?guī)?lái)一篇java異常繼承何類,運(yùn)行時(shí)異常與一般異常的區(qū)別(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 一文帶你搞懂Java中Get和Post的使用

    一文帶你搞懂Java中Get和Post的使用

    這篇文章主要為大家詳細(xì)介紹了Java中Get和Post用法的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-11-11
  • SpringBoot @SpringBootTest加速單元測(cè)試的小訣竅

    SpringBoot @SpringBootTest加速單元測(cè)試的小訣竅

    這篇文章主要介紹了SpringBoot @SpringBootTest加速單元測(cè)試的小訣竅,具有很好的參考價(jià)值,對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot配置Hikari數(shù)據(jù)庫(kù)連接池的詳細(xì)步驟

    SpringBoot配置Hikari數(shù)據(jù)庫(kù)連接池的詳細(xì)步驟

    Spring Boot是一個(gè)開(kāi)源的Java框架,它簡(jiǎn)化了基于Spring的應(yīng)用程序的開(kāi)發(fā)和部署,HikariCP是一個(gè)高性能的Java數(shù)據(jù)庫(kù)連接池,被廣泛應(yīng)用于Java開(kāi)發(fā)領(lǐng)域,它是目前最快和最輕量級(jí)的連接池之一,本文介紹了SpringBoot配置Hikari數(shù)據(jù)庫(kù)連接池的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • spring-boot-plus V1.4.0發(fā)布 集成用戶角色權(quán)限部門(mén)管理(推薦)

    spring-boot-plus V1.4.0發(fā)布 集成用戶角色權(quán)限部門(mén)管理(推薦)

    這篇文章主要介紹了spring-boot-plus V1.4.0發(fā)布 集成用戶角色權(quán)限部門(mén)管理,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值需要的朋友可以參考下
    2019-11-11
  • Spring Boot 中的任務(wù)執(zhí)行器基本概念及使用方法

    Spring Boot 中的任務(wù)執(zhí)行器基本概念及使用方法

    務(wù)執(zhí)行器是 Spring Boot 中的一個(gè)非常實(shí)用的模塊,它可以簡(jiǎn)化異步任務(wù)的開(kāi)發(fā)和管理,在本文中,我們介紹了任務(wù)執(zhí)行器的基本概念和使用方法,以及一個(gè)完整的示例代碼,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

石林| 乐业县| 乌鲁木齐县| 张掖市| 建水县| 沙坪坝区| 修武县| 玉门市| 乐业县| 日土县| 中宁县| 高州市| 广河县| 昌黎县| 芷江| 江山市| 抚宁县| 桓仁| 灌南县| 兖州市| 陆川县| 原平市| 安国市| 政和县| 南平市| 措美县| 高陵县| 乌兰县| 崇义县| 济源市| 汤阴县| 浏阳市| 光泽县| 琼中| 鄂温| 东丰县| 阿拉善右旗| 顺昌县| 溆浦县| 怀化市| 会理县|