1. 程式人生 > >List的泛型擦除

List的泛型擦除

首先看一段程式碼
雖然泛型不同,但是依然不能過載,編譯根本不能通過

   public void addData(List<TaskRequest> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
    }

  public void addData(List<TaskBean> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
    }

Java中的泛型基本上都是在編譯器這個層次來實現的。在生成的Java位元組碼中是不包含泛型中的型別資訊的。使用泛型的時候加上的型別引數,會在編譯器在編譯的時候去掉。這個過程就稱為型別擦除。

看一下官方說明,在編譯期間泛型是被擦除的,所以去掉泛型,原形都是List,所以不能過載就能明白了