Java泛型-使用实现接口的元素列表

基督教

在Java中,我有一个interface I,一个class C和一个class D,都实现了I

interface I
{
    //some method signatures
}

class C implements I
{
    //implement methods from I
}

class D implements I
{
    //implement methods from I
}

现在,我创建一个包含元素的List class C,以及第二个包含元素的List D

List<C> c = new LinkedList<C>();
List<D> d = new LinkedList<D>();

我有一种方法想要应用于所有包含实现元素的列表interface I

public void modifyList(List<I> l)
{
    //call some method defined in I
}

但是,当我尝试调用该函数时,编译器将引发错误:

public void testModification()
{
    modifyList(c);
    modifyList(d);
}

==> The method modifyList(List<I>) in the type [...] is not applicable for the arguments (List<C>) / (List<D>)

我可以通过重新定义我的列表使其工作,使其显示为

List<I> c1 = new LinkedList<I>();

但是现在c1可以同时包含C类和D类的Elements,这是我要避免的事情。如何创建一个List,以便可以精确定义它应该包含哪些类的元素,但仍将其用作函数的参数?

用户名

您可以尝试使用

public void modifyList(List<? extends I> l) {
    // ...
}

该类型应为通配符,表示任何类型,只要其超类为(...),或者在这种情况下为I类即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实现接口的泛型列表

来自分类Dev

Java使用泛型

来自分类Dev

用泛型java实现接口

来自分类Dev

从 Java 接口实现泛型方法

来自分类Dev

在Java中使用泛型和反射实现接口方法

来自分类Dev

Java泛型接口转换

来自分类Dev

Java泛型-clearList实现

来自分类Dev

如何实现Java泛型

来自分类Dev

通过泛型在java中制作泛型接口

来自分类Dev

Java的泛型类型使用

来自分类Dev

Java 泛型:如何在泛型接口中获取泛型类的 Id?

来自分类Dev

用不同的泛型类型实现同一泛型Java接口的多个实例?

来自分类Dev

为什么在Java中可以将接口的泛型方法实现为非泛型?

来自分类Dev

Java泛型,实现类型为Iterable <E>的接口

来自分类Dev

为什么Java泛型无法实现接口?

来自分类Dev

如何确定Java泛型是否实现了特定的接口?

来自分类Dev

Java-泛型和通配符与接口与实现

来自分类Dev

Java泛型中的接口实现传播

来自分类Dev

泛型类型和接口Java

来自分类Dev

接口中的Java泛型问题

来自分类Dev

泛型类型和接口Java

来自分类Dev

Java中的泛型,扩展接口

来自分类Dev

接口方法Java中的泛型类型

来自分类Dev

用Java继承泛型接口

来自分类Dev

Java 中的泛型或继承/接口?

来自分类Dev

使用接口的泛型T列表

来自分类Dev

如何在Java接口中使用泛型的泛型

来自分类Dev

用Java转换泛型列表

来自分类Dev

关于Java中的泛型和列表