generics方法用法
我在C#中有这个代码:
private static T GetPage() where T : new() { var page = new T(); PageFactory.InitElements(Browser.Driver, page); return page; } public static AboutPage About { get { return GetPage(); } }
我试图在Java中实现这一点,因为我非常喜欢这个概念,但我对generics(尤其是c#)并不擅长。 那么,这是我的代码:
private static T getPage(Class cls) throws Exception{ T page = cls.newInstance(); PageFactory.initElements(driver, page); return page; } public static LoginPage Login() { return LoginPage.getPage(); }
它根本不起作用。 我觉得我缺少基础知识,所以我非常感谢任何帮助或建议。
试试这个:
private static 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
实例化,因为它不会抛出exception。
如果您没有Java 8,则必须使用您的代码,并调用如下:
getPage(LoginPage.class);
但这也意味着必须处理例外情况。