java - 返回 Java 中的泛型类型

标签 java generics

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

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

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

无法从类型变量中进行选择。

我哪里出错了?

最佳答案

由于 type erasure在运行时 Tjava.lang.Object 所以这不是一个选项。如果有一个可以调用 getClass()T 实例

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

关于java - 返回 Java 中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20673593/

相关文章:

java - 无法构建与 firebase 版本不兼容的原因,并且相机 react native

java - Chunkwise-将数据从InputStream复制到OutputStream + 在末尾获取byte[]

c# - 有没有办法将泛型类型参数限制为匿名类型?

java - <?> 是什么意思

java - 验证模拟调用的顺序

java - 在azure Rest API调用中,在同一虚拟机的不同API中获取不同的数据磁盘ID?

c# - 通用单例

java - 如何从通用对象调用实例方法?

c# - 很好的泛型介绍

java - 如何在java中创建多行正则表达式-越界异常