有没有办法从反射中获得Class?

时间:2014-07-05 07:12:22

标签: java reflection

有没有办法从反射中获得Class? 我想要做的是,我已经为hazelcast-3.2.3实现了自定义Serializer。我不想为每个类(我需要在Hcast中存储的对象)编写单独的Serializer。

我想要这个

class TestSerializer<T> {
 Class<T> classType;
 Public Test(){
  classType = T.someway() //if there is any method to get that;
}

}

因为我在hazelcast.xml中配置我的序列化程序,所以我无法在构造函数参数中传递Class

2 个答案:

答案 0 :(得分:3)

我假设您真的在询问如何在运行时获取泛型类型T 的类,而不仅仅是一个类。

最简单的方法是将它作为参数传递给构造函数,但如果你真的,真的希望用反射来做,你可以使用一个技巧,例如。杰克逊使用它依赖于匿名子类。为此,请阅读TypeReference的工作原理,尤其是Super Type Tokens

当然,我可能会在你想做的事情上疯狂地离开这里。如果我是,请纠正我:)

答案 1 :(得分:1)

由于类型擦除,您的TestSerializer无法在内部获得该类型。该信息必须在外部提供。

这意味着您必须通过配置来重构您的工作方式。