当前位置:首页 > 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

多类型参数

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

java如何定义泛型

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);
}

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

java如何定义泛型

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开发工具包(JDK) 访问Oracle官方网站或OpenJDK下载页面,选择适合操作系统的版本(Windows、macOS或Linux)。推荐下载最新的长期支持(LTS)版本,如Java…

如何导入java项目

如何导入java项目

导入Java项目的方法 使用IDE导入(如IntelliJ IDEA或Eclipse) 打开IDE后选择导入现有项目,导航至项目根目录(包含pom.xml或build.gradle的文件位置)。IDE…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…

如何启用java

如何启用java

启用 Java 的方法 检查 Java 是否已安装 在命令行或终端输入 java -version,如果显示版本信息,说明 Java 已安装。若未安装,需从 Oracle 官网 或 OpenJDK 下…

react如何定义路由

react如何定义路由

定义路由的基本方法 在React中定义路由通常使用react-router-dom库,这是React生态中最流行的路由解决方案。需要安装该库后才能使用路由功能。 npm install react-…

react如何定义可扩展的对象

react如何定义可扩展的对象

定义可扩展对象的方法 在React中定义可扩展对象通常涉及使用JavaScript的原型继承、类继承或组合模式。以下是几种常见的方法: 使用类继承 通过class和extends实现对象的扩展性。子…