如何获得通用类型

时间:2011-11-16 13:24:22

标签: java generics

  

可能重复:
  How to determine the class of a generic type?
  How to obtain class instance generic argument type

我有一些c#代码:

public static class ServiceLocator
{ 

   private static Dictionary<Type, Type> services = new Dictionary<Type, Type>();

   public static void RegisterService<T>(Type service)
   {
      services[typeof (T)] = service;
   } 

...

}

我想在java上编写相同的逻辑。我怎样才能获得泛型T的类型(T.getClass()无效) 比如c#中的typeof (T)

2 个答案:

答案 0 :(得分:2)

你做不到。泛型是erased after compilation。您必须传递Class<T>作为参数。

但是,我不太了解你的例子。您为什么要将TypeClass)映射到自身?

答案 1 :(得分:0)

这是不可取的,但是您可以检查isAssignableFrom(Class cls)以查找您期望的所有类,但听起来这里可以实现更好的设计(不涉及类型检查)