当前位置: 首页 > 知识库问答 >
问题:

如何实现列表界面中的方法,而不在数组列表或硒概念下的领英列表中创建对象

蓟雪峰
2023-03-14

列表

在上述情况下,驾驶人。findElements将返回WebElement的列表,现在我们有了list的对象“leElement”,现在假设如果我想得到我可以在代码leElement下面使用的第一个元素。get(0);

但我怀疑列表接口中存在get()方法,所以我应该创建ArrayList或LinkedList的对象来实现此方法。。但在上述情况下,我可以直接从接口获得get方法的结果,而无需从ArrayList或链表实现。。有人能给我解释一下吗?

共有1个答案

宰父劲
2023-03-14

这个问题与硒无关,是OOP中一个叫做多态性的概念。

List接口提供抽象方法,实现List的类应该为抽象方法提供一个实现体。因此,列表接口中的方法get()在类ArrayList和列表接口的其他实现中实现。,因此我们可以有这样的东西:

List<WebElement> webElements = new ArrayList<>();

现在让我们假设我想为Selenium创建APIfindElements。如果我创建这样的方法:

public ArrayList<WebElement> findElements(input..){

它将与ArrayList紧密耦合,每个人都必须从一开始就使用ArrayList才能使用该API的方法,这是不可取的。

一个更好的解决方案是使用一些抽象的概念来表示ArrayList,这就是List接口。

public List<WebElement> findElements(input..){
     List<WebElements> webElements = new ArrayList<>();

     webElements.addAll(some operations to populate the list)

     return webElements;
}

这个更灵活,怎么办?比如说,在发布应用程序后,我们推断ArrayList的实现不是我们用于该用例的最佳选择,我们希望使用LinkedList。使用编写API的第一种方法,API的使用者也必须从自己的角度进行更改。使用更好的方式,他们不需要做任何事情:)

List仍然是ArrayList的一个实例;在提供的示例中。硒一定实施了类似的东西。当我们调用findElements时,我们得到了List的具体实现,只是我们不知道我们得到的是什么实现类,但我们知道它为列表界面中找到的抽象方法提供了实现主体我们可以利用它们。

 类似资料:
  • 我正在尝试创建列表列表,其中大列表表示纸张包含小列表表示问题的集合,问题列表由问题字符串及其ID组成。在这里我的代码: 现在我没有错误地制作问题列表,但是当我尝试创建更大的列表时,Visual Studio无法将可变问题类型识别为类型,哪里错了?

  • 问题内容: 我需要增量填充列表或列表元组。看起来像这样: 为了使它不那么冗长,更优雅,我想我会预先分配一个空列表 预分配部分对我来说并不明显。当我这样做时,我会收到对同一列表的引用列表,因此以下内容的输出 是: 我可以使用循环(),但我想知道是否存在“无环”解决方案。 是获得我想要的东西的唯一方法 问题答案: 这将创建x个不同的列表,每个列表都有一个列表副本(该列表中的每个项目都是通过引用提供的,

  • 我是Java和Stack Overflow的新手,我有一个关于排列的问题。 方法:我使用中的对象生成。每个的大小从(可能最小为1)到,并包含具有唯一名称属性的自定义生成对象。 问题:现在我的问题是如何在我的外部(y轴)中获得从第一个到最后一个的所有可能对象组合的排列(我想我们可以说这是x轴)? 我试着举一个简单的例子: : 1.1|1.2|1.3 : 2.1 : 3.1|3.2 这里,这些位于外部

  • 我不熟悉java和springboot。我正在尝试使用springboot创建一个CRUD应用程序。我使用MySQL存储数据。 员工模式- 员工资源库- 员工控制员- 上面的控制器在JSON对象数组表单中给出了结果,如下所示 但我需要以下表格的回复 非常感谢你的帮助。

  • 问题内容: 我如何用对象填充ArrayList,而内部的每个对象都不相同? 问题答案:

  • 对于C#中泛型列表的泛型列表的概念,我似乎有点难以理解。我认为问题源于