跳到主要内容

Java泛型中的默认类型及基本类型的自动装箱和拆箱机制

· 阅读需 1 分钟
素明诚
Full stack development

泛型机制

  1. 如果没有进行具体类型的传入,默认使用 Object 进行装箱。
  2. 取值的时候自动拆箱为基本类型。

举例

package com.Generics;

public class Box<T> {
private T value;

public Box () {
}

public Box (T value) {
this.value = value;
}

public T getValue () {
return value;
}

public void setValue (T value) {
this.value = value;
}
}

使用

package com.Generics;

public class BoxTest {
public static void main (String[] args) {
Box genericBox = new Box(); // 不指定泛型类型,默认为Object
genericBox.setValue("Hello"); // 可以存储任何类型的对象
genericBox.setValue(123); // 也可以存储一个int

Object genericValue = genericBox.getValue(); // 返回值类型为Object
System.out.println(genericValue);

Box<Integer> intBox = new Box<>();
intBox.setValue(42); // 自动装箱:将int转换为Integer

int intValue = intBox.getValue(); // 自动拆箱:将Integer转换为int
System.out.println(intValue);

}
}

Object genericValue = genericBox.getValue()这段代码没有报错就可以判断出默认类型为Object