Java 利用lambda机制寻找硒元素
我有一个使用lambda的snip代码,但出现了错误 “lambda转换的目标类型必须是接口” 有人能帮忙吗?我的代码如下:Java 利用lambda机制寻找硒元素,java,selenium,xpath,lambda,java-8,Java,Selenium,Xpath,Lambda,Java 8,我有一个使用lambda的snip代码,但出现了错误 “lambda转换的目标类型必须是接口” 有人能帮忙吗?我的代码如下: private By optStarGrade = (strStar) -> { By.xpath("//input[@id='" + strStar + "'"); }; By是一个类,因此它不能用作lambda表达式的目标类型 只有具有SAM(单一抽象方法)的接口才能用作lambda表达式的目标类型 因此,如果您真的想使用lambda,那么请使用消费者: 有关
private By optStarGrade = (strStar) -> { By.xpath("//input[@id='" + strStar + "'"); };
By
是一个类,因此它不能用作lambda表达式的目标类型
只有具有SAM(单一抽象方法)的接口才能用作lambda表达式的目标类型
因此,如果您真的想使用lambda,那么请使用消费者
:
有关更多信息,请参阅和功能接口 方法
为了简化您可能正在尝试的内容并更好地将其关联起来,您可以从表示为方法的当前代码开始。此方法试图为给定的strStar查找类型为By
的optsTargetrade
,它是XPath的子部分,类似于:
public static By optStarGradeFunction(String strStar) {
return By.xpath("//input[@id='" + strStar + "'");
}
然后您可以通过创建机制,如下所示:
By optStarGrade = findByXPath("XPath");
匿名类 该方法的类似表示(也称为函数)为:
Function<String, By> optStarGradeFunction = new Function<String, By>() {
@Override
public By apply(String strStar) {
return By.xpath("//input[@id='" + strStar + "'");
}
};
兰姆达 但是,可以使用lambda表示
函数
,如下所示:
Function<String, By> optStarGradeFunction = strStar -> By.xpath("//input[@id='" + strStar + "'");
Function optStarGradeFunction=strStar->By.xpath(//input[@id='“+strStar+”);
Function<String, By> optStarGradeFunction = new Function<String, By>() {
@Override
public By apply(String strStar) {
return By.xpath("//input[@id='" + strStar + "'");
}
};
By optStarGrade = optStarGradeFunction.apply("XPath"); // calls the above 'apply' method
Function<String, By> optStarGradeFunction = strStar -> By.xpath("//input[@id='" + strStar + "'");