同じ種類のオブジェクトのさまざまな表現があります。それをモノと呼びましょう。「Thing」はマーカーインターフェイスです。ThingFormat0、ThingFormat1、ThingFormat2などはすべてThingを実装するJavaBeansです。(JavaBeansであるため、JSONマーシャラーは自動的にJSONとの間で変換します。)ThingFormat1には、nameやidなどのメンバーがいくつかあります。ThingFormat2には、他のものへのURIリンクがあります。ThingFormat3には、他のものなどのThingFormat1表現があります。
JSONシリアライザーは、URIを自動的に変換する方法を知っています。(toString()とコンストラクターClassName(String string)を使用して変換できるすべてのクラスで機能します。)
URIのように動作するが、マーカーインターフェイスThingを実装するThingFormat0が必要です。
public class ThingFormat0 extends URI implements Thing {}
URIは最終クラスであり、サブクラス化できないため、これは機能しません。
これを行うために私が考えることができる唯一の方法は、デコレータ(URIに機能を追加しないため、非常に縮退した種類のデコレータ)を作成することです。これは、一部の「ダックタイピング」言語では簡単ですが、Javaでは、URIをラップして、必要なURIのすべてのメソッドを実装する必要があるため、より面倒です。もっと簡単な方法はありますか?