draw2dLayeredPanesのシリアル化についてサポートが必要です。シリアル化について読んだところ、クラスはSerializable
インターフェイスを実装している場合にのみシリアル化でき、そのすべてのフィールドはそれ自体がシリアル化可能または一時的であることがわかりました。
シリアル化する必要のある非常に複雑な図がありますが、どのように進めるかについての手がかりがありませんか?LayeredPaneクラスにはList型のフィールドが1つしか含まれていないことがわかりました。いずれにせよ、LayeredPaneオブジェクトをシリアル化可能にするために、再帰的なメソッドなどを作成する方法を誰かが手助けできますか?
@mKorbel非常に大規模なアプリケーションの一部であるため、私が直面している問題のサンプルシナリオを提供するのは困難です。それでも、私はあなたに問題の考えを与えるかもしれないケースを作りました:
public class Editor extends org.eclipse.ui.part.EditorPart {
org.eclipse.draw2d.FreeformLayer objectsLayer;
org.eclipse.draw2d.ConnectionLayer connectionLayer;
public void createPartControl(Composite parent) {
org.eclipse.draw2d.FigureCanvas canvas = new org.eclipse.draw2d.FigureCanvas(composite);
org.eclipse.draw2d.LayeredPane pane = new org.eclipse.draw2d.LayeredPane();
objectsLayer = new org.eclipse.draw2d.FreeformLayer();
connectionLayer = org.eclipse.draw2d.ConnectionLayer();
pane.add(objectsLayer);
pane.add(connectionLayer);
canvas.setContents(pane);
addFigures();
addConnections();
}
private void addFigures() {
// Adds Objects, i.e., org.eclipse.draw2d.Figure Objects, to the objectLayer
// which turn contains, 1 or more org.eclipse.draw2d.Panel Objects,
// with variable number of org.eclipse.draw2d.Label objects
}
private void addConnections() {
// Adds org.eclipse.draw2d.PolylineConnection objects to the connectionLayer
// between objects in the objectLayer
}
}