次のコードを実行して JSON を保存すると:
String regionObject = this.gson.toJson(parentRegion);
JsonFileInputOutput.saveObjectToTextFile(regionObject,
"./tests/model/util/test_saveRegionObject.txt");
その後、作成した .txt ファイルを再度開きます。
public void test_openRegionObject() throws IOException {
String regionAsString = JsonFileInputOutput
.openObjectInTextFile("./tests/model/util/test_saveRegionObject.txt");
Gson gson = new Gson();
Region LGNRegion = gson.fromJson(regionAsString, Region.class);
System.out.println(LGNRegion.toString());
}
それは完全に正常に動作します。
ただし、コードの 2 番目のスニペットを最初のコードを含まない別のクラスにしようとすると、次のエラーが発生します。
java.lang.RuntimeException Failed to invoke public model.MARK_II.Cell() with no args
Cell
クラス内で使用されるカスタム クラスですRegion
。Cell
クラスの実装は次のとおりです。
public abstract class Cell {
protected boolean isActive;
public Cell() {
this.isActive = false;
}
public boolean getActiveState() {
return this.isActive;
}
public void setActiveState(boolean isActive) {
this.isActive = isActive;
}
}
私の質問は、コードの最初のスニペットで作成した適切なシリアル化された JSON を読み取ることができるように、この例外を修正するにはどうすればよいかということです。