【发布时间】:2019-08-11 02:16:00
【问题描述】:
假设我有一个简单的类:
public class TestClass
{
public String field1 = "Field1";
public String field2 = "Field2";
public String field3 = "Field3";
}
我的项目中有多个 pojo 类,我希望能够将每个对象序列化为 json。所以我创建了新的Serializer 类(用于序列化的gson):
public class Serializer
{
public String toJson()
{
return new Gson().toJson(this);
}
}
我的示例类扩展了Serializer:
public class TestClass extends Serializer
{
public String field1 = "Field1";
public String field2 = "Field2";
public String field3 = "Field3";
}
我可以通过调用toJson 方法来序列化扩展Serializer 的任何类对象,如下所示:
TestClass test1 = new TestClass();
String json = test1.toJson();
现在我想通过调用静态方法fromJson 来构造类对象。所以我的TestClass 看起来像这样:
public class TestClass extends Serializer
{
public String field1 = "Field1";
public String field2 = "Field2";
public String field3 = "Field3";
public static TestClass fromJson(String json)
{
return new Gson().fromJson(json, new TypeToken<TestClass>() {}.getType());
}
}
所以,我可以通过调用来创建新对象:
TestClass test2 = TestClass.fromJson(json);
当然,这不是好方法,因为我需要在我的所有类中包含 fromJson 实现。
问题:如何将fromJson移动到超类(Serializer),并为fromJson方法提供单一的、类型相关的实现?
【问题讨论】:
标签: java generics inheritance types