欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言:當工具類對多個模型類進行排序,比較等操作的時候,需要書寫大量重復代碼,因為懶人總要想怎么省事的,所以考慮使用泛型這個玩意簡化代碼

案例:當前存在兩個模型類,F(xiàn)ruit和Person,他們都需要排序方法而且業(yè)務邏輯各不相同,因此需要分別寫兩個排序方法,但因為排序相同的地方太多,唯一的區(qū)別就是判斷兩個對象的大小關系,于是在此做簡化操作。

執(zhí)行步驟:

1、編寫模型類接口 interface Model

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

這里僅需要定義一個比較的方法

2、編寫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的代碼我就不放上來了,因為為了舉例我這倆的比較方法寫的是一樣的,但是實際業(yè)務代碼可能是不一樣的

3、編寫工具類 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);
        }
      }
    }
  }
}

隨便找了個排序算法就套進去了

然后就是主函數(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類一樣實現(xiàn)Model的compareTo方法就可以使用Sort.sort方法進行排序了

后記:最開始我的想法是寫個Model接口,在接口中寫一個compareTo方法,然后形參類型不知道咋寫了

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

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java語言注解基礎概念詳解

    java語言注解基礎概念詳解

    這篇文章主要介紹了java語言注解基礎概念詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Springboot+Mybatis中typeAliasesPackage正則掃描實現(xiàn)方式

    Springboot+Mybatis中typeAliasesPackage正則掃描實現(xiàn)方式

    這篇文章主要介紹了Springboot+Mybatis中typeAliasesPackage正則掃描實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java bootclasspath的具體用法

    java bootclasspath的具體用法

    本文主要介紹了java bootclasspath的具體用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • 淺談Java中的橋接方法與泛型的逆變和協(xié)變

    淺談Java中的橋接方法與泛型的逆變和協(xié)變

    對應于Java當中,協(xié)變對應的就是<? extends XXX>,而逆變對應的就是<? super XXX>,本文詳細的介紹了Java中的橋接方法與泛型的逆變和協(xié)變,感興趣的可以了解一下
    2022-04-04
  • 關于java.util.Random的實現(xiàn)原理詳解

    關于java.util.Random的實現(xiàn)原理詳解

    Java實用工具類庫中的類java.util.Random提供了產(chǎn)生各種類型隨機數(shù)的方法,下面這篇文章主要給大家介紹了關于java.util.Random實現(xiàn)原理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-08-08
  • SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務端

    SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務端

    MQTT是一種輕量級的消息傳輸協(xié)議(Message Queuing Telemetry Transport),旨在實現(xiàn)設備之間的低帶寬和高延遲的通信,本文給大家介紹了SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務端,需要的朋友可以參考下
    2024-04-04
  • Spring中的@AutoWired與@Resource及@Qualifier注解詳解

    Spring中的@AutoWired與@Resource及@Qualifier注解詳解

    這篇文章主要介紹了Spring中的@AutoWired與@Resource及@Qualifier注解詳解,spring不但支持自己定義的@Autowired注解,所以Autowired與Spring是強相關性,只能在spring框架中使用,而后幾個注解則不然,需要的朋友可以參考下
    2023-11-11
  • springmvc與mybatis集成配置實例詳解

    springmvc與mybatis集成配置實例詳解

    這篇文章主要介紹了springmvc與mybatis集成配置實例詳解的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • SpringBoot整合SpringSecurity和JWT的示例

    SpringBoot整合SpringSecurity和JWT的示例

    這篇文章主要介紹了SpringBoot整合SpringSecurity和JWT的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • @Schedule?如何解決定時任務推遲執(zhí)行

    @Schedule?如何解決定時任務推遲執(zhí)行

    這篇文章主要介紹了@Schedule?如何解決定時任務推遲執(zhí)行問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論