java 写一个 泛型擦除 的例子
时间: 2024-02-20 22:56:10 浏览: 151
Java 泛型总结(一):基本用法与类型擦除
泛型擦除是 Java 泛型机制中的一个重要特性,它指的是在编译期间,所有的泛型类型参数都会被擦除(即被替换为其上限或 Object 类型),从而使得泛型类型在运行时成为了原始类型。下面是一个简单的泛型擦除的例子:
```java
public class GenericTest<T> {
private T data;
public GenericTest(T data) {
this.data = data;
}
public void setData(T data) {
this.data = data;
}
public T getData() {
return data;
}
}
```
在上面的代码中,我们定义了一个泛型类 `GenericTest`,其中包含了一个泛型类型参数 `T`。在实例化这个类时,我们可以为其传入任意类型的参数,例如:
```java
GenericTest<String> stringGenericTest = new GenericTest<>("Hello, world!");
GenericTest<Integer> integerGenericTest = new GenericTest<>(123);
```
在编译期间,Java 编译器会将上面的代码中的泛型类型参数 `T` 都替换为其上限或 Object 类型,即:
```java
public class GenericTest {
private Object data;
public GenericTest(Object data) {
this.data = data;
}
public void setData(Object data) {
this.data = data;
}
public Object getData() {
return data;
}
}
```
在运行时,`stringGenericTest` 和 `integerGenericTest` 实际上都是 `GenericTest` 类型的对象,其泛型类型参数 `T` 已经被擦除,因此它们的 `data` 变量都是 `Object` 类型的。
阅读全文