猿问

当我使用 findElements 时,如何实现 List<WebElement> 接口?

List是一个接口。 List<String> list=new ArrayList<String>(); 在这里,假设我们正在创建列表接口的引用变量并将其分配给ArrayList实现接口的对象List。


让我们说如果我们想获得列表的大小。我们将使用list.size()它将使用运行时多态性在内部调用对象size()的方法ArrayList。


List简单地说,我的意思是在类中实现的方法,ArrayList这就是我们能够使用它的原因。


问题是,


我如何能够使用size()以及如何在哪个 Class 中实现 size 方法?


List<WebElement> noOfRows=driver.findElements(By.xpath(".//*[@id='leftcontainer']//tbody/tr"));

List<WebElement> noOfCol=driver.findElements(By.xpath(".//*/tr/th"));


int rowSize=noOfRows.size();

int colSize=noOfCol.size();

我希望你们明白我的意思。


当我说List<String> list= new ArrayList<String>(); 这意味着我将使用ArrayList方法作为运行时多态性。


但是在这种情况下...


driver.get("https://money.rediff.com/gainers/bse/daily/groupa?src=gain_lose");


List<WebElement> noOfRows=driver.findElements(By.xpath(".//*[@id='leftcontainer']//tbody/tr"));

List<WebElement> noOfCol=driver.findElements(By.xpath(".//*/tr/th"));



int rowSize=noOfRows.size();//How I am able to use method of a List interface

int colSize=noOfCol.size();

我能够运行该程序并执行所有操作,但只想在此澄清一下概念。似乎我对一个小问题感到困惑,但希望这种困惑消失。先感谢您


白衣染霜花
浏览 93回答 1
1回答

慕姐8265434

Java中的变量可以有类型List,但是不能实例化List接口,即List在内存中创建类型的对象。内存中的对象是实现接口的其他类型List。从中返回的对象findElements实现了接口List,但编译器不知道该对象的实际类。您可以在运行时使用getClass方法查询它,但这通常不是必需的,因为您可以将它视为一个List而不必确切知道List它是什么类型。当您调用size返回List的 by时findElement,JVM 会size根据对象的实际类型选择要使用的正确实现。因此,如果它恰好是 anArrayList那么您将得到ArrayList.size,等等。通常,从这样的方法返回的类型List不是通常的类型之一,java.util而是一些针对手头任务量身定制的自定义实现。
随时随地看视频慕课网APP

相关分类

Java
我要回答