Java的generics跟C++的template有何區別?

討論來自stackoverflow

詳細解釋大家看原文,只翻譯結論

Java代碼裏出現的尖括弧看上去很像C++的template,但其實正式名字叫generics,它不像C++模板(一個加強版的C宏預處理器),而是一個避免 強制類型轉換 的語法糖

舉個例子

public class PhoneNumbers {
  private Map phoneNumbers = new HashMap();

  public String getPhoneNumber(String name) {
    return (String)phoneNumbers.get(name);//強制類型轉換
  }

  ...
}

----引入generics後------

public class PhoneNumbers {
  private Map<String, String> phoneNumbers = new HashMap<String, String>();

  public String getPhoneNumber(String name) {
    return phoneNumbers.get(name);//沒有強制類型轉換
  }

  ...
}



發佈了159 篇原創文章 · 獲贊 27 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章