Java泛型类型推断

Java泛型类型推断

类型推断表示Java编译器查看方法调用及其对应的声明,以检查和确定类型参数。 推断算法检查参数的类型,如果可用,则返回分配的类型。 推断算法尝试找到一个可以填满所有类型参数的特定类型。

编译器会生成未经检查的转换警告,而不使用内部类型推断。

语法

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

在上面语法中,

  • Box ? Box是一个泛型类。
  • <> ? 尖括号运算符表示类型推断。

描述

使用尖括号运算符编译器可确定参数的类型。该操作符可从Java SE 7版本开始支持使用。

示例

使用您喜欢的编辑器创建以下java程序,并保存到文件:TypeInference.java 中,代码如下所示 -

package com.zyiz;

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