当前位置: 首页 > 面试题库 >

Java-在运行时获取类的通用类型

翟柏
2023-03-14
问题内容

我该如何实现?

public class GenericClass<T>
{
    public Type getMyType()
    {
        //How do I return the type of T?
    }
}

到目前为止,我尝试过的所有操作始终返回类型,Object而不是所使用的特定类型。


问题答案:

正如其他人所提到的,只有在某些情况下才能通过反思来实现。

如果你确实需要类型,这是通常的(类型安全的)解决方法:

public class GenericClass<T> {

     private final Class<T> type;

     public GenericClass(Class<T> type) {
          this.type = type;
     }

     public Class<T> getMyType() {
         return this.type;
     }
}


 类似资料:
  • 问题内容: 我该如何实现? 到目前为止,我尝试过的所有操作始终返回类型,而不是所使用的特定类型。 问题答案: 正如其他人所提到的,只有在某些情况下才能通过反射来实现。 如果你确实需要类型,这是通常的(类型安全)解决方法:

  • 是否可以在运行时使用TypeScript获取对象的类/类型名称?

  • 问题内容: 我有; 有没有一种(简单的)方法来检索列表的通用类型? 问题答案: 如果这些实际上是某个类的字段,那么你可以在反射的帮助下获得它们: 你还可以对参数类型和方法的返回类型执行此操作。 但是,如果它们处于你需要了解它们的类/方法的同一范围之内,那么就没有必要了解它们,因为你已经自己声明了它们。

  • 问题内容: 嗨,Java中有什么方法可以获取静态通用类类型 我结束了构建 我想知道是否存在类似的东西: (我真的不想构造新的对象只是为了获得其类型) 谢谢 问题答案: 由于所有类实际上在运行时都对应于同一类,因此可以这样做: 但是由于某种原因,Java不喜欢它。用String尝试过: 好吧,那我们就傻了吧: 这很愚蠢,但是有效。它会产生“未经检查”的警告,但是您的示例也是如此。请注意,尽管如此,它

  • 问题内容: 我的课开始于 现在,我想在代码中的某处编写代码,但这是不可能的(就像还是现在)。 您能告诉我如何获得通用药吗? 问题答案: 您可以动态提供类型,但是编译器不会自动为您提供该类型。 顺便说一句:动态地获取它并非不可能,但这取决于如何使用它。例如 可以确定Arnie.class具有带有MuscleHero的Generic参数的超类。 在这种情况下,超类的通用参数就是这样。

  • 问题内容: 我为Clojure添加了耐用性,最后我可以添加函数了。在Clojure中,使用调用方法(以及其他方法)将字节字节编译为类。这样,功能就是一流的。为了使这些持久化,我需要序列化和反序列化这些类。如何在不访问.class文件的情况下获取类的字节码? 如果我弄错了,请纠正我,但是使用代理程序需要产生一个单独的VM,并且该代理程序连接到第一个VM。我需要从同一台VM执行此操作。 仅使用Seri