Gson ユーザー ガイドでは、Gson を適切に操作するには、クラスのデフォルトの引数なしコンストラクターを定義する必要があると述べています。さらに、Gson のクラスのjavadocInstanceCreator
では、デフォルト コンストラクターが欠落しているクラスのインスタンスを逆シリアル化しようとすると例外がスローされると述べられており、そのような場合に使用する必要がInstanceCreator
あります。ただし、デフォルトのコンストラクターがないクラスで Gson の使用をテストしようとしましたが、シリアライゼーションとデシリアライゼーションの両方が問題なく動作します。
デシリアライゼーションのコードは次のとおりです。非引数コンストラクターのないクラス:
public class Mushroom {
private String name;
private double diameter;
public Mushroom(String name, double diameter) {
this.name = name;
this.diameter = diameter;
}
//equals(), hashCode(), etc.
}
そしてテスト:
@Test
public void deserializeMushroom() {
assertEquals(
new Mushroom("Fly agaric", 4.0),
new Gson().fromJson(
"{name:\"Fly agaric\", diameter:4.0}", Mushroom.class));
}
これは正常に動作します。
だから私の質問は、デフォルトのコンストラクターを必要とせずに実際にGsonを使用できますか、それとも機能しない状況がありますか?