当前位置:首页 > Java

java如何定义泛型

2026-03-03 19:06:10Java

泛型类定义

在类名后添加尖括号 <T>T为类型参数(可自定义名称),类内部可使用该类型:

public class Box<T> {
    private T content;
    public void setContent(T content) {
        this.content = content;
    }
    public T getContent() {
        return content;
    }
}

使用时指定具体类型:

Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
Box<Integer> intBox = new Box<>();
intBox.setContent(123);

泛型方法定义

在方法返回类型前声明类型参数 <T>,方法内可使用泛型类型:

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

调用时自动推断类型或显式指定:

String[] strArr = {"A", "B"};
printArray(strArr); // 自动推断为String
printArray(new Integer[]{1, 2}); // 自动推断为Integer

多类型参数

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

public class Pair<K, V> {
    private K key;
    private V value;
    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }
    // getter/setter省略
}

使用示例:

Pair<String, Integer> pair = new Pair<>("Age", 25);

泛型接口定义

接口中定义泛型方式与类类似:

public interface List<T> {
    void add(T item);
    T get(int index);
}

实现时需指定具体类型或保留泛型:

public class StringList implements List<String> {
    @Override
    public void add(String item) { /*...*/ }
    @Override
    public String get(int index) { /*...*/ }
}

类型通配符

使用 ? 表示未知类型,常用于方法参数:

  • <?> 无限制通配符
  • <? extends T> 上界通配符(接受T及其子类)
  • <? super T> 下界通配符(接受T及其父类)

示例:

public void processList(List<? extends Number> list) {
    for (Number num : list) {
        System.out.println(num.doubleValue());
    }
}

可传入 List<Integer>List<Double>

泛型限制

  • 不能使用基本类型(如 int,需用包装类 Integer
  • 不能直接实例化泛型:T obj = new T(); 非法
  • 静态上下文中不能使用类的类型参数

java如何定义泛型

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

相关文章

java如何定义变量

java如何定义变量

定义变量的基本语法 在Java中,变量定义需要指定数据类型和变量名,基本语法如下: 数据类型 变量名; 例如定义一个整型变量: int age; 声明并初始化变量 可以在声明变量的同时进行初始化赋…

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…

java如何避免死锁

java如何避免死锁

避免死锁的方法 固定顺序获取锁 确保所有线程按照相同的顺序获取多个锁。例如,若需要获取锁A和锁B,所有线程必须先获取A再获取B,避免交叉依赖导致的死锁。这种方式破坏了“循环等待”条件。 使用锁超时…