まず第一に、Java のインターフェースでコンストラクターを定義することはできないことを知っています。しかし、どういうわけか、非常に似たものが必要な問題に遭遇しました。私の場合、簡単な解決策があるかもしれません...
私はインターフェースを持っています:
public interface SomeObject {
/**
* Generate a xml representation of the object.
*/
public String generateXMLRepresentation();
}
このオブジェクトの xml 表現はどこかに保存され、後でこの xml 表現を使用してオブジェクトのコピーを作成できるようになります。私の最初の考えは、文字列を入力として受け取るコンストラクターを定義し、SomeObject のすべての実装がそれを処理する方法と対応するオブジェクトを構築する方法を知ることでした。
どうすればこれを達成できますか?
編集:私はそれについて十分に明確ではなかったか、間違った方法で考えていましたが、Factory または Builder パターンは機能しないと思います。誰もが SomeObject の新しい実装を記述でき、xml 文字列を受け取るコンストラクターを実装する必要がある、より強力なものが必要です。別の言い方をすれば、私は SomeObject の実装がいくつ存在するか、またはどの実装が存在するかを知りませんが、それでも、すべての実装が xml 表現からそれ自体を構築する方法を知っていることに依存しています。