泛型方法用法
本文关键字:用法 泛型方法 | 更新日期: 2023-09-27 17:56:36
我在 C# 中有这段代码:
private static T GetPage<T>() where T : new()
{
var page = new T();
PageFactory.InitElements(Browser.Driver, page);
return page;
}
public static AboutPage About
{
get { return GetPage<AboutPage>(); }
}
我试图在 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> 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
}
在这里,我将T
的实例化从 Class
切换到从Supplier
实例化,因为它不会抛出异常。
如果你没有Java 8,你必须使用你的代码,并像这样调用:
getPage(LoginPage.class);
但这也意味着必须处理例外情况。