亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

掌握 Java 泛型:构建可复用、类型安全的代码

Java 泛型:构建可复用、类型安全的代码

本指南讲解 Java 泛型、如何编写泛型类和方法及其优势,配清晰示例。

Java 泛型让你编写一个类、接口或方法操作多种数据类型,同时保持编译期类型安全。

注意:泛型不适用于基本类型(int、float、char 等)。


Java 泛型类

声明类型参数可创建适用于任意对象类型的类。

示例:创建泛型类

class Main {
    public static void main(String[] args) {
        GenericsClass<Integer> intObj = new GenericsClass<>(5);
        System.out.println("Generic Class returns: " + intObj.getData());
        GenericsClass<String> stringObj = new GenericsClass<>("Java Programming");
        System.out.println("Generic Class returns: " + stringObj.getData());
    }
}
class GenericsClass<T> {
    private T data;
    public GenericsClass(T data) {
        this.data = data;
    }
    public T getData() {
        return this.data;
    }
}

输出

Generic Class returns: 5
Generic Class returns: Java Programming

GenericsClass 是泛型类,T 为类型参数。创建两个实例:


Java 泛型方法

方法也可为泛型,接受任意类型参数同时保持类型安全。

示例:创建泛型方法

class Main {
    public static void main(String[] args) {
        DemoClass demo = new DemoClass();
        demo.<String>genericsMethod("Java Programming");
        demo.<Integer>genericsMethod(25);
    }
}
class DemoClass {
    public <T> void genericsMethod(T data) {
        System.out.println("Generics Method:");
        System.out.println("Data Passed: " + data);
    }
}

输出

Generics Method:
Data Passed: Java Programming
Generics Method:
Data Passed: 25

编译器能推断类型时可省略显式类型参数:

demo.genericsMethod("Java Programming");

有界类型

有时需泛型类型仅接受特定类族。有界类型用 extends 关键字实现。

语法:<T extends A> – T 可以是 A 或其任意子类型。

示例:有界类型

class GenericsClass <T extends Number> {
    public void display() {
        System.out.println("This is a bounded type generics class.");
    }
}
class Main {
    public static void main(String[] args) {
        // GenericsClass<String> obj = new GenericsClass<>(); // 编译时错误
    }
}

GenericsClass 仅接受数值类型(Integer、Double 等)。尝试用 String 实例化导致编译错误:

GenericsClass<String> obj = new GenericsClass<>();
^ reason: inference variable T has incompatible bounds equality constraints: String lower bounds: Number where T is a type-variable: T extends Number declared in class GenericsClass

Java 泛型优势

1. 代码复用

泛型代码可操作多种数据类型,减少重复。单一方法可处理整数、字符串和自定义对象。

2. 编译期类型检查

类型参数编译期已知,编译器可在运行前检测类型不匹配。

3. 与集合无缝集成

Java 集合框架基于泛型,使集合强制类型安全。例如:

ArrayList<String> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();

其他集合类(LinkedList、Queue、Map 等)同样使用泛型获取相同优势。

java

  1. 深入理解 Java final 关键字:变量、方法与类的不可变性
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  5. 精通 Java 匿名内部类:定义、语法与实战示例
  6. Java 单例模式详解:安全实现与使用指南
  7. 精通 Java 反射:运行时检查类、方法与字段
  8. 精通 Java ArrayList:操作、方法与最佳实践
  9. Java Stack 类全面指南:用法、核心方法与实战示例
  10. Java HashSet 类完全指南:操作、方法与集合论实战
  11. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除