Допустим, у меня есть простой класс:
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";
}
И я могу сериализовать любой объекткласса, расширяющего Serializer
путем вызова метода toJson
, например:
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
?