首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java泛型類型參數命名規範:E、T、K、V含義與自定義標識符

     編輯:程式設計綜合問答

直接回答

泛型尖括號內可以使用任何合法標識符,但業界形成了**約定俗成的單字母命名規範**以提高可讀性:

標準命名慣例

代碼示例

// 標準庫實現片段
public interface List extends Collection { ... }
public interface Map { V put(K key, V value); }
public class Class { public T newInstance() ... }
public interface Comparator { int compare(T o1, T o2); }

// 自定義泛型類
public class Pair { // 語義清晰:鍵值對
    private K key; private V value;
    public Pair(K k, V v) { key=k; value=v; }
    public K getKey() { return key; }
    public V getValue() { return value; }
}

// 任意標識符也合法(但不推薦)
public class Box { // Apple 是類型參數名,非類名!
    private Apple content;
    public void set(Apple a) { content = a; }
    public Apple get() { return content; }
}
// 使用時:Box box = new Box<>(); // 此處 String 替換 Apple

類型擦除與限制

  • 泛型類型參數**只能是引用類型**(類、接口、數組、其他類型變量),**不能是基本類型**(`int`、`double` 等)
  • 運行時類型信息被擦除:`List` 和 `List` 運行時都是 `List`
  • 不能實例化類型參數:`new T()` 非法,需工廠或反射
  • 不能創建泛型數組:`new T[10]` 非法,需 `List` 或 `(T[])new Object[10]`

最佳實踐

  • 遵循慣例:單字母大寫,語義明確
  • 多參數時按順序:`T`、`U`、`V` 或語義字母 `K`、`V`、`E`
  • 複雜邊界用描述性名稱:`>` 可讀性優於 `>`
  • 文檔註釋說明類型參數含義:`@param 元素類型`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
字母含義典型使用場景來源
EElement集合元素類型:`List`、`Set`、`Queue`Collection Framework
TType通用類型參數:`Class`、`Callable`、`Comparator`Generic Type
KKey鍵類型:`Map`、`ConcurrentHashMap`Key
VValue值類型:`Map`、`Future`Value
NNumber數值類型:`NumberUtils`Number
S, U, V...第2、3、4...類型參數多參數泛型:`Function`、`BiFunction`Type Sequence