将 List<BaseClass>
复制到 List<DerivedClass>
是一个典型的 Java 编程问题,涉及到泛型和类型转换。在这里,BaseClass
是一个基类,DerivedClass
是从 BaseClass
派生的子类。
首先,我们需要了解 Java 中的通配符 ?
和 extends
关键字。通配符 ?
可以表示任何类型,而 extends
关键字可以用来限制泛型的类型。
在这个问题中,我们可以使用通配符和 extends
关键字来实现将 List<BaseClass>
复制到 List<DerivedClass>
的操作。
以下是一个示例代码:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<BaseClass> baseList = new ArrayList<>();
List<DerivedClass> derivedList = new ArrayList<>();
// 添加元素到 baseList 中
baseList.add(new BaseClass());
baseList.add(new DerivedClass());
// 将 baseList 复制到 derivedList 中
for (BaseClass base : baseList) {
if (base instanceof DerivedClass) {
derivedList.add((DerivedClass) base);
}
}
// 输出 derivedList 的大小
System.out.println(derivedList.size());
}
}
class BaseClass {
}
class DerivedClass extends BaseClass {
}
在这个示例中,我们首先创建了一个 baseList
和一个空的 derivedList
。然后,我们向 baseList
中添加了一些 BaseClass
和 DerivedClass
的实例。接下来,我们使用 for
循环遍历 baseList
中的每个元素,并检查它们是否是 DerivedClass
的实例。如果是,我们将其强制转换为 DerivedClass
并添加到 derivedList
中。
最后,我们输出 derivedList
的大小,以验证我们是否成功地将 List<BaseClass>
复制到了 List<DerivedClass>
中。
需要注意的是,这种方法只能将 DerivedClass
的实例从 baseList
复制到 derivedList
中。如果 baseList
中包含了 BaseClass
的实例,这些实例将不会被复制到 derivedList
中。
领取专属 10元无门槛券
手把手带您无忧上云