【发布时间】:2017-07-14 11:02:54
【问题描述】:
我正在尝试在我的项目中包装(并简化)MapDB 库,如下所示:
公共类 MapDbPersistentStorage正如已经指出的那样,问题出在Serializer.LONG 部分(它应该是V 类型)。我需要根据提供的泛型类型提出一个序列化程序。这样做的正确方法是什么?
【问题讨论】:
-
将
Serializer传递给包装器的构造函数。 -
那不是说我将传递
Long类型两次吗?一次作为泛型参数,一次作为构造函数参数?你不认为这是一个坏主意,因为一个可以提供两种不兼容的类型? -
是的,但是您需要两次,一次在编译时(泛型类型),一次在运行时(
Serializer)。如果你想让它更安全,你可以将Serializer包装在具有序列化器泛型类型的泛型接口中,然后将该接口作为参数。 -
我强烈反对“我需要两次”的说法!我的意思是 Java 可能,但 我 需要它一次。您能否写下您的解决方案,因为我不确定它是什么?