当前位置:首页 > Java

java如何使用泛型

2026-03-03 11:09:06Java

泛型的基本概念

泛型(Generics)是 Java 5 引入的特性,允许在类、接口或方法中使用类型参数,从而增强代码的类型安全性和复用性。泛型的核心目的是在编译时检查类型,避免运行时类型转换错误。

泛型类

泛型类通过类型参数定义,可以在实例化时指定具体类型。

java如何使用泛型

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");
String value = stringBox.getContent(); // 无需强制类型转换

泛型方法

泛型方法可以在非泛型类中定义,方法声明时指定类型参数。

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

// 使用示例
Integer[] intArray = {1, 2, 3};
Util.<Integer>printArray(intArray); // 显式指定类型
Util.printArray(intArray); // 类型推断

泛型接口

泛型接口与泛型类类似,通过类型参数定义。

java如何使用泛型

public interface Pair<K, V> {
    K getKey();
    V getValue();
}

// 实现泛型接口
public class OrderedPair<K, V> implements Pair<K, V> {
    private K key;
    private V value;

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

    @Override
    public K getKey() { return key; }

    @Override
    public V getValue() { return value; }
}

// 使用示例
Pair<String, Integer> pair = new OrderedPair<>("Age", 25);

类型通配符

通配符(?)用于增强泛型的灵活性,支持未知类型的处理。

  • <?>:无限制通配符,表示任意类型。
  • <? extends T>:上界通配符,表示 T 或其子类。
  • <? super T>:下界通配符,表示 T 或其父类。
public static void printList(List<?> list) {
    for (Object elem : list) {
        System.out.print(elem + " ");
    }
}

// 使用示例
List<Integer> intList = Arrays.asList(1, 2, 3);
printList(intList); // 支持任意类型

泛型限制

  • 类型擦除:泛型信息在编译后被擦除,运行时无法获取具体类型。
  • 不能实例化类型参数new T() 是非法的。
  • 不能用于静态上下文:静态变量或方法不能使用类的类型参数。

实际应用示例

通过泛型实现一个通用的缓存类:

public class Cache<T> {
    private Map<String, T> cacheMap = new HashMap<>();

    public void put(String key, T value) {
        cacheMap.put(key, value);
    }

    public T get(String key) {
        return cacheMap.get(key);
    }
}

// 使用示例
Cache<Integer> intCache = new Cache<>();
intCache.put("count", 100);
int value = intCache.get("count");

最佳实践

  • 优先使用泛型集合:如 List<String> 而非原生 List
  • 避免原生类型:原生类型(如 List)会失去类型安全检查。
  • 合理使用通配符:在需要灵活处理类型时选择适当的通配符。

通过泛型,Java 实现了类型安全的代码复用,减少了运行时错误,是现代 Java 开发的核心特性之一。

分享给朋友:

相关文章

如何打开java

如何打开java

打开 Java 程序的方法 通过命令行运行 Java 程序 确保已安装 Java Development Kit (JDK) 并配置环境变量。使用 javac 编译 .java 文件,生成 .clas…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

如何配置java环境变量

如何配置java环境变量

下载并安装JDK 从Oracle官网或OpenJDK项目下载适合操作系统的JDK安装包。运行安装程序,按照提示完成安装,默认路径通常为C:\Program Files\Java\jdk-版本号。 配…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

react如何使用ueditor

react如何使用ueditor

安装 UEditor 下载 UEditor 的官方版本,解压后将整个文件夹放入项目的 public 目录下。确保可以通过 URL 直接访问 UEditor 的资源文件,例如 public/uedito…