【JAVASE】探索 Java 泛型:开启通用编程的奥秘

泛型

  • 1、什么是泛型
  • 2、泛型的优点
  • 3、泛型的语法
  • 4、泛型方法
  • 5、类型擦除和限制
  • 6、泛型的上界
    • 6.1 语法
    • 6.2 示例

1、什么是泛型

Java泛型是Java 5引入的一个新特性,它允许在编译时定义类型参数,使代码更加灵活和可重用。通过使用泛型,你可以编写一个类或方法,该类或方法可以处理多种数据类型,而不仅仅是特定的数据类型

2、泛型的优点

(1)类型安全:使用泛型,可以在编译时捕获类型错误,而不是在运行时。
(2)代码复用:通过使用泛型,可以编写适用于多种数据类型的代码,避免代码重复。
(3)灵活性:使用泛型,可以在运行时动态地指定类型,增加了代码的灵活性。

3、泛型的语法

泛型类是使用<>这样的类型参数来声明的类,<>中T是一个通用的类型占位符。例如:

class Box<T> {  
    private T t;  
  
    public void set(T t) { this.t = t; }  
    public T get() { return t; }  
}
public class Main() {
	public static void main(String[] args) {
		Box<Integer> box1 = new Box<>();
		box1.set(12);
		Box<String> box2 = new Box<>();
		box2.set("abc");
	}
}

在这个例子中,我们定义了一个名为Box的类,它使用一个类型参数T。这个类有一个私有的成员变量t,其类型为T。我们可以通过调用set()和get()方法来设置和获取t的值。

类名后的 <> 代表占位符,表示当前类是一个泛型类
了解: 【规范】类型形参一般使用一个大写字母表示,常用的名称有:
E 表示 Element
K 表示 Key
V 表示 Value
N 表示 Number
T 表示 Type
S, U, V 等等 - 第二、第三、第四个类型

4、泛型方法

泛型方法是在方法声明中使用类型参数的方法。例如:

public class GenericClass {
    public <T> T genericMethod(T parameter) {
        // 可以使用 T 类型的参数和返回值
        return parameter;
    }
}

5、类型擦除和限制

在 Java 中,泛型在编译时会进行类型擦除将类型参数替换为其边界类型(如Object)。这意味着在运行时无法获取具体的类型参数信息。
为了避免潜在的问题,Java 还提供了一些限制,例如不能在泛型类型上使用基本类型、不能创建泛型数组等。

6、泛型的上界

在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束。

6.1 语法

class 泛型类名称<类型形参 extends 类型边界> {
	...
}

6.2 示例

public class MyArray<E extends Number> {
	...
}

只接受 Number 的子类型或本身作为 E 的类型实参

MyArray<Integer> l1; // 正常,因为 Integer 是 Number 的子类型
MyArray<String> l2; // 编译错误,因为 String 不是 Number 的子类型

了解: 没有指定类型边界 E,可以视为 E extends Object

到此,我们的 Java 泛型博客之旅就告一段落了。希望我的分享对你有所帮助。如果你有任何问题或想法,欢迎在评论中留言。让我们继续探索 Java 世界,共同成长!✌️
【JAVASE】探索 Java 泛型:开启通用编程的奥秘_第1张图片

你可能感兴趣的:(JAVASE基础,java,开发语言,idea,算法,eclipse)