Java泛型型別推斷


型別推斷表示Java編譯器檢視方法呼叫及其對應的宣告,以檢查和確定型別引數。 推斷演算法檢查引數的型別,如果可用,則返回分配的型別。 推斷演算法嘗試找到一個可以填滿所有型別引數的特定型別。

編譯器會生成未經檢查的轉換警告,而不使用內部型別推斷。

語法

Box<Integer> integerBox = new Box<>();

在上面語法中,

  • Box ? Box是一個泛型類。
  • <> ? 尖括號運算子表示型別推斷。

描述

使用尖括號運算子編譯器可確定引數的型別。該操作符可從Java SE 7版本開始支援使用。

範例

使用您喜歡的編輯器建立以下java程式,並儲存到檔案:TypeInference.java 中,程式碼如下所示 -

package com.yiibai;

public class TypeInference {
    public static void main(String[] args) {
        // type inference
        Box2<Integer> integerBox = new Box2<>();
        // unchecked conversion warning
        Box<String> stringBox = new Box<String>();

        integerBox.add(new Integer(198));
        stringBox.add(new String("Hello World"));

        System.out.printf("Integer Value :%d\n", integerBox.get());
        System.out.printf("String Value :%s\n", stringBox.get());
    }
}

class Box2<T> {
    private T t;

    public void add(T t) {
        this.t = t;
    }

    public T get() {
        return t;
    }
}

執行上面程式碼,得到以下結果 -

Integer Value :198
String Value :Hello World