gpt4 book ai didi

java - 将泛型类型限制为方法上的父类(super class)型

转载 作者:行者123 更新时间:2023-12-05 06:20:30 29 4
gpt4 key购买 nike

<分区>

我有一个列表装饰器,它应该允许从一个列表转换到另一个列表。思路是这样的,而且已经行得通了:

public class ExtendedList<T> implements List<T> {

private List<T> delegate;

// constructors, methods, a collector, etc

public <R> ExtendedList<R> castTo(Class<R> targetType) {
return delegate.stream().map(item -> (R) item).collect(ExtendedList.toList());
}
}

我想知道是否(以及如何)将类型参数 R 限制为有效的转换目标,如 TT 的所有父类(super class)以及 T 实现的所有接口(interface),这样编译器就可以在我使用它时检查是否可以转换:

ExtendedList<Vehicle> vehicles = cars.castTo(Vehicle.class);  // assuming Car implements Vehicle -> OK
ExtendedList<Dog> dogs = cars.castTo(Dog.class); // assuming Car does not extend Dog -> not OK

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com