Java 泛型限制

2018-02-20 00:42 更新

Java教程 - 什么是Java泛型限制


類型參數(shù)不能實例化

不能創(chuàng)建類型參數(shù)的實例。例如,考慮這個類:

// Can"t create an instance of T. 
class Gen<T> {
  T ob;

  Gen() {
    ob = new T(); // Illegal!!!
  }
}

靜態(tài)成員的限制

沒有靜態(tài)成員可以使用由封裝類聲明的類型參數(shù)。例如,此類的所有靜態(tài)成員都是非法的:

class Wrong<T> {
  // Wrong, no static variables of type T.
  static T ob;

  // Wrong, no static method can use T.
  static T getob() {
    return ob;
  }

  // Wrong, no static method can access object of type T.
  static void showob() {
    System.out.println(ob);
  }
}

您可以使用自己的類型參數(shù)聲明靜態(tài)泛型方法。


泛型數(shù)組限制

您不能實例化基本類型是類型參數(shù)的數(shù)組。您不能創(chuàng)建類型特定的泛型引用的數(shù)組。

以下短程序顯示了兩種情況:

class MyClass<T extends Number> {
  T ob;
  T vals[];

  MyClass(T o, T[] nums) {
    ob = o;
    vals = nums;
  }
}

public class Main {
  public static void main(String args[]) {
    Integer n[] = { 1 };
    MyClass<Integer> iOb = new MyClass<Integer>(50, n);
    // Can"t create an array of type-specific generic references.
    // Gen<Integer> gens[] = new Gen<Integer>[10]; 
    MyClass<?> gens[] = new MyClass<?>[10]; // OK
  }
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號