java基礎 泛型

來源:互聯網
上載者:User

標籤:log   擦除   畫布   info   集合   out   成員類   string   .class   

1.泛型集合中的元素是存在繼承關係的

public class Main {    public static void main(String[] args) {        List<Shape> list=new ArrayList<Shape>();        list.add(new Circle());        list.add(new Rectangle());    }}class Canva {    public void drawAll(List<? extends Shape> list) {        for (Shape s : list) {            s.draw(this);        }    }}abstract class Shape {    public abstract void draw(Canva c);}class Circle extends Shape {    @Override    public void draw(Canva c) {        System.out.println("在畫布" + c + "畫圓");    }}class Rectangle extends Shape {    @Override    public void draw(Canva c) {        System.out.println("在畫布" + c + "畫矩形");    }}

 

2.泛型類中的泛型不能設定到靜態成員中

泛型實際上就是將運行時期出現的錯誤,放到編譯時間期,在運行時實際會擦除泛型型別,靜態成員屬性類成員,所有對象共用,如果運行泛型型別那麼也就是在執行個體中靜態成員的類型可以不一樣,這樣違背了java靜態成員的文法

class Apple<T>{    public static T color; //泛型型別不能應用到靜態成員上    private T info;    public Apple() {    }    public Apple(T info) {        this.info = info;    }    public T getInfo() {        return info;    }    public void setInfo(T info) {        this.info = info;    }}

 

3.在編寫泛型類子類時,繼承的泛型類必須是原生類或泛型型別明確的泛型類

原因:如果建立c類對象,實際jvm也會為我們建立父類Apple類的對象,但是Apple類中成員類型缺是未知的

class A extends Apple<String>{}class B extends Apple{}class C extends Apple<T>{  //錯誤}

 

4.泛型類不是真正的類
泛型類不是真正的類,只是編譯時間期的一種類型表示方式,在運行時期會擦除泛型型別變成原生類,比如:List<String>不存在這種類型的類,也不會產生對應的class檔案,運行時期原生類時List,產生的class檔案是List.class ,所以對於List<String>.class或instanceof的使用都是錯誤的

public class Main {    public static void main(String[] args) {        List<String> list=new ArrayList<>();        System.out.println(List<String>.class); //錯誤                if(list instanceof List<Object>){ //錯誤                    }    }}

 

  

  

  

java基礎 泛型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.