Java 泛型方法用法
我用C#编写了这个代码: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
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);