下面是一个复杂的示例,展示了如何在 Java 中使用泛型来处理入参和出参。这个示例包括一个通用的服务类,该服务类可以处理不同类型的数据,并且返回相应的结果。
示例背景
假设我们有一个通用的服务类 GenericService,它可以处理不同类型的数据(例如 Integer、String 等),并且返回处理后的结果。我们将使用泛型来实现这一功能。
实体类
首先,定义一些简单的实体类,这些实体类将用于示例中的数据处理。
Java
深色版本
public class Data<T> {
private T value;
public Data(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
@Override
public String toString() {
return "Data{" +
"value=" + value +
'}';
}
}
服务接口
定义一个通用的服务接口 GenericService,该接口包含一个处理数据的方法。
Java
深色版本
public interface GenericService<T> {
Data<T> processData(Data<T> input);
}
服务实现
实现 GenericService 接口,提供具体的处理逻辑。
Java
深色版本
public class IntegerService implements GenericService<Integer> {
@Override
public Data<Integer> processData(Data<Integer> input) {
// 处理整数数据,例如乘以2
int processedValue = input.getValue() * 2;
return new Data<>(processedValue);
}
}
public class StringService implements GenericService<String> {
@Override
public Data<String> processData(Data<String> input) {
// 处理字符串数据,例如转为大写
String processedValue = input.getValue().toUpperCase();
return new Data<>(processedValue);
}
}
客户端代码
编写客户端代码,使用 GenericService 来处理不同类型的数据。
Java
深色版本
public class Client {
public static void main(String[] args) {
// 创建 IntegerService 实例
GenericService<Integer> integerService = new IntegerService();
// 创建 Data 对象
Data<Integer> integerData = new Data<>(5);
// 处理数据
Data<Integer> processedIntegerData = integerService.processData(integerData);
System.out.println("Processed Integer Data: " + processedIntegerData);
// 创建 StringService 实例
GenericService<String> stringService = new StringService();
// 创建 Data 对象
Data<String> stringData = new Data<>("hello");
// 处理数据
Data<String> processedStringData = stringService.processData(stringData);
System.out.println("Processed String Data: " + processedStringData);
}
}
详细解释
实体类 Data:
Data 类是一个泛型类,可以存储任何类型的数据。
value 字段用于存储实际的数据。
提供了构造函数、getter 和 setter 方法,以及 toString 方法。
服务接口 GenericService:
GenericService 是一个泛型接口,定义了一个 processData 方法,该方法接受一个 Data 对象并返回一个 Data 对象。
泛型参数 T 表示处理的数据类型。
服务实现 IntegerService 和 StringService:
IntegerService 实现了 GenericService<Integer> 接口,处理整数数据。
StringService 实现了 GenericService<String> 接口,处理字符串数据。
每个服务类在 processData 方法中实现了具体的处理逻辑。
客户端代码:
创建 IntegerService 和 StringService 实例。
创建 Data 对象,分别存储整数和字符串数据。
调用 processData 方法处理数据,并打印处理后的结果。
通过这种方式,你可以使用泛型来实现一个通用的服务类,处理不同类型的数据,并返回相应的结果。希望这些示例能帮助你更好地理解和使用 Java 泛型。