当前位置:首页 > Java

java 如何定义泛型

2026-02-05 07:37:48Java

定义泛型类

在类名后添加尖括号 <T>T 是类型参数占位符(可自定义为其他字母,如 EKV 等)。泛型类中的字段、方法参数或返回值可使用该类型参数。

public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

定义泛型方法

在方法返回值前声明类型参数 <T>,泛型方法可独立于类是否为泛型类。

public <T> void printArray(T[] array) {
    for (T element : array) {
        System.out.print(element + " ");
    }
}

多类型参数

泛型支持多个类型参数,用逗号分隔。

public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }
}

泛型通配符

使用 ? 表示未知类型,通常用于方法参数以增强灵活性:

  • <?>:无限制通配符。
  • <? extends T>:上界通配符,表示 T 或其子类。
  • <? super T>:下界通配符,表示 T 或其父类。
public void processList(List<? extends Number> list) {
    for (Number num : list) {
        System.out.println(num);
    }
}

类型擦除与限制

Java 泛型在编译后会被擦除为原始类型(如 Object),因此运行时无法获取泛型的具体类型。

java 如何定义泛型

  • 不能实例化泛型类型new T() 是非法的。
  • 不能用于静态上下文:静态字段或方法不能使用类的类型参数。
  • 不能使用基本类型:泛型类型必须为引用类型(如 Integer 而非 int)。

实际应用示例

Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
System.out.println(stringBox.getContent()); // 输出 "Hello"

Pair<Integer, String> pair = new Pair<>(1, "Apple");
List<Double> numbers = Arrays.asList(1.1, 2.2);
processList(numbers); // 输出 1.1 和 2.2

标签: 定义java
分享给朋友:

相关文章

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名.方法名…

java如何定义数组

java如何定义数组

定义数组的基本语法 在Java中,数组可以通过以下两种方式定义: 方式一:声明数组并指定长度 数据类型[] 数组名 = new 数据类型[数组长度]; 例如: int[] numbers = n…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io.Fil…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…