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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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 泛型方法用法_Java_C#_Selenium_Generics_Selenium Webdriver - Fatal编程技术网

Java 泛型方法用法

Java 泛型方法用法,java,c#,selenium,generics,selenium-webdriver,Java,C#,Selenium,Generics,Selenium Webdriver,我用C#编写了这个代码: private static T GetPage(),其中T:new() { var page=newt(); PageFactory.InitElements(Browser.Driver,page); 返回页面; } 公共静态关于第页关于 { 获取{return GetPage();} } 我试图用Java实现这一点,因为我非常喜欢这个概念,但我不擅长泛型(尤其是c#)。这就是我的代码: private static <T> T getPage(C

我用C#编写了这个代码:

private static T GetPage(),其中T:new()
{
var page=newt();
PageFactory.InitElements(Browser.Driver,page);
返回页面;
}
公共静态关于第页关于
{
获取{return GetPage();}
}  
我试图用Java实现这一点,因为我非常喜欢这个概念,但我不擅长泛型(尤其是c#)。这就是我的代码:

private static <T> T getPage(Class<? extends T> cls) throws Exception{
    T page = cls.newInstance();
    PageFactory.initElements(driver, page);
    return page;
}
public static LoginPage Login() {
    return LoginPage.getPage();
}  
private static T getPage(Class请尝试以下方法:

private static <T> T getPage(Supplier<? extends T> supp) {
    T page = supp.get();
    PageFactory.initElements(driver, page);
    return page;
}

public static LoginPage Login() {
    return getPage(LoginPage::new); // Passing the default constructor
}

但这也意味着必须处理异常。

它根本不起作用不是一句有用的话。请解释什么不起作用。@jornverne在下面的代码中,我得到:“无法解析方法getPage()”例如.TBH,我甚至不确定我实现它是否接近逻辑上正确的解决方案。啊,我明白了。但是你没有显示
LoginPage.getPage()
。谁的签名与上面的方法不兼容。@jornverne但我认为上面的泛型方法getPage()不兼容我正试着打电话给他。我只是不知道该把什么作为一个论点。@Jornverne非常感谢,这似乎奏效了。
private static <T> T getPage(Supplier<? extends T> supp) {
    T page = supp.get();
    PageFactory.initElements(driver, page);
    return page;
}

public static LoginPage Login() {
    return getPage(LoginPage::new); // Passing the default constructor
}
getPage(LoginPage.class);