有没有办法从反射中获得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
。
答案 0 :(得分:3)
我假设您真的在询问如何在运行时获取泛型类型T 的类,而不仅仅是一个类。
最简单的方法是将它作为参数传递给构造函数,但如果你真的,真的希望用反射来做,你可以使用一个技巧,例如。杰克逊使用它依赖于匿名子类。为此,请阅读TypeReference
的工作原理,尤其是Super Type Tokens
答案 1 :(得分:1)
由于类型擦除,您的TestSerializer
无法在内部获得该类型。该信息必须在外部提供。
这意味着您必须通过配置来重构您的工作方式。