返回Java中的泛型类型

时间:2013-12-19 04:39:52

标签: java generics

我是java新手,我正在尝试实现一个通用方法:

public static  <T> T login(String username,String password)
{
    //...
    return PageFactory.initElements(driver,T.class);
}

这里我想传递泛型类,但是当我尝试T.class时,我收到了错误:

Cannot select from a type variable.

我犯了错误?

1 个答案:

答案 0 :(得分:6)

由于type erasure在运行时Tjava.lang.Object,因此这不是一个选项。如果有一个T的实例,可以通过<{p>}来调用getClass()

public static  <T> T login(String username,String password, T obj) {
  // to get the class at run-time.
  return PageFactory.initElements(driver,obj.getClass());
}

或正如其他人已经指出的那样,你可以使用

public static  <T> T login(String username,String password, Class<T> cls) {
  // to use the Class, passed from caller.
  return PageFactory.initElements(driver,cls);
}