当前位置: 首页 > 面试题库 >

传递ArrayList 用List声明的方法

曹兴贤
2023-03-14
问题内容

我有一个带有包含泛型的参数的方法。

public static void readList(List<ModelObject> list)
{
    // more code
}

我想一个传递ArrayListModelObjectImplementations到这种方法。

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error

ModelObjectModelObjectImplementation实现的接口。如何更改方法声明以允许这样做?


问题答案:

如果您使用的是Java 1.5版或更高版本,则可以使用通配符。

public static void readList(List<? extends ModelObject> list)

此解决方案较为通用,因为它适合的所有java.util.List接口实现以及的子类/子接口ModelObject。有关更多详细信息,请转到通配符教程。



 类似资料:
  • 问题内容: 这两个声明之间有什么区别? 宣言1: 宣言2: 问题答案: 这是通用的,您想在将实现细节返回给客户端时隐藏实现细节,以后可以将实现从透明地更改为。 在设计库等的情况下,此机制很有用,这些库可能会在某个时间点更改其实现详细信息,而对客户端的更改最少。 这是您始终需要返回的要求。在某些时候,如果您想将实现细节更改为,也应在客户端进行更改以代替。

  • 这两种声明之间有什么区别? 宣言1: 宣言2:

  • 问题内容: 我是Java新手。我想知道之间的区别: 和 和 谢谢 问题答案: 第一个仅从Java 7开始有效,并且等效于 只是不太冗长。 第三个相同,相当于 因此严格等同于第二个。 出于以下问题的答案中提到的原因,您应该首选第一个:将列表与ArrayList作为引用类型?

  • 问题内容: Java中的ArrayList或List声明质疑并回答了如何声明为空,但是如何声明带有值的ArrayList? 我尝试了以下操作,但返回语法错误: 问题答案: 在Java 9+中,您可以执行以下操作: Java 8使用: 当然,您可以使用接受一个的构造函数创建一个新对象: 提示:文档中包含非常有用的信息,这些信息通常包含您要查找的答案。例如,以下是该类的构造函数: 构造一个初始容量为1

  • 在Java中的ArrayList或List声明提出了疑问并回答了如何声明一个空的,但是我如何声明一个带有值的ArrayList? 我尝试了以下操作,但它返回了一个语法错误:

  • 两次尝试在下面的MyTest类中传递我的泛型类。Strategy层次结构看起来不错,但是用泛型接口作为参数声明方法有问题。我该如何解决这个问题? Test1编译错误:类型策略中的方法setNode(capture#1-of?extends Node)不适用于参数(NodeImpl) 测试2编译错误:MyTest类型中的方法test2(策略)不适用于参数(MyStrategy) MyTest类是继承