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 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); 

但这也意味着必须处理例外情况。