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 interfaceint colSize=noOfCol.size();我能够运行该程序并执行所有操作,但只想在此澄清一下概念。似乎我对一个小问题感到困惑,但希望这种困惑消失。先感谢您
1 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
Java中的变量可以有类型List
,但是不能实例化List
接口,即List
在内存中创建类型的对象。内存中的对象是实现接口的其他类型List
。
从中返回的对象findElements
实现了接口List
,但编译器不知道该对象的实际类。您可以在运行时使用getClass
方法查询它,但这通常不是必需的,因为您可以将它视为一个List
而不必确切知道List
它是什么类型。
当您调用size
返回List
的 by时findElement
,JVM 会size
根据对象的实际类型选择要使用的正确实现。因此,如果它恰好是 anArrayList
那么您将得到ArrayList.size
,等等。通常,从这样的方法返回的类型List
不是通常的类型之一,java.util
而是一些针对手头任务量身定制的自定义实现。
添加回答
举报
0/150
提交
取消