java 泛型 的各种用法和例子
时间: 2024-04-07 20:30:15 浏览: 102
Java中泛型的各种使用
Java 泛型是 Java 5 版本之后引入的新特性,它可以让我们编写更加灵活和安全的代码。下面是一些 Java 泛型的用法和例子:
1. 泛型类
泛型类是指在类名后面添加尖括号,括号中包含类型参数声明,例如:
```java
public class MyGenericClass<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
```
这个例子中,T 是类型参数,表示可以接受任何类型的数据,MyGenericClass 类可以存储和返回任何类型的数据。
2. 泛型接口
泛型接口定义方式与泛型类类似,例如:
```java
public interface MyGenericInterface<T> {
public void print(T t);
}
```
这个例子中,MyGenericInterface 接口定义了一个 print 方法,使用泛型参数 T,可以传递任何类型的数据给这个方法。
3. 泛型方法
泛型方法是指在方法返回类型前面添加尖括号,括号中包含类型参数声明,例如:
```java
public class MyGenericMethod {
public <T> void print(T t) {
System.out.println(t);
}
}
```
这个例子中,print 方法使用了泛型参数 T,可以打印任何类型的数据。
4. 限定类型参数
有时候我们需要限制泛型参数的类型范围,可以使用 extends 关键字来限定类型参数,例如:
```java
public class MyGenericClass<T extends Number> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
```
这个例子中,泛型参数 T 被限定为 Number 类型或 Number 的子类,MyGenericClass 类只能存储和返回 Number 或 Number 的子类的数据。
5. 通配符
有时候我们需要传递多种类型的参数给方法或类,可以使用通配符来实现,例如:
```java
public class MyGenericClass<T> {
private List<T> list = new ArrayList<>();
public void addAll(List<? extends T> newList) {
list.addAll(newList);
}
}
```
这个例子中,addAll 方法使用了通配符 ? extends T,表示 newList 可以是 T 类型或者 T 的子类型的 List。
Java 泛型的用法还有很多,上面的例子只是其中的一部分。泛型可以让代码更加灵活和安全,可以减少代码中的类型转换和错误。但是在编写泛型代码时需要注意,避免产生类型擦除、类型不匹配等问题。
阅读全文