Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 利用lambda机制寻找硒元素_Java_Selenium_Xpath_Lambda_Java 8 - Fatal编程技术网

Java 利用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,那么请使用消费者: 有关

我有一个使用lambda的snip代码,但出现了错误

“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 + "'");