我有許多不同的表示同一種對象;讓我們把它稱爲一件事。 「事」是一個標記界面。 ThingFormat0,ThingFormat1,ThingFormat2等都是實現Thing的JavaBean。 (因爲它們是JavaBeans,所以JSON編組會自動將它們自動轉換爲JSON或從JSON自動轉換它們。)ThingFormat1只有一些成員,如名稱和標識。 ThingFormat2有與其他東西的URI鏈接。在ThingFormat3中有ThingFormat1表示那些其他東西等。繼承最終的類;或者,一個退化裝飾器
JSON序列化程序知道如何自動轉換URI。 (它適用於任何可以使用toString()和構造函數ClassName(String string)進行轉換的類。)
我想要一個ThingFormat0,它的行爲像一個URI,但實現了標記接口Thing。
public class ThingFormat0 extends URI implements Thing {}
這不起作用,因爲URI是最後一個類,不能被子類化。
我能想到做到這一點的唯一方法是製作一個裝飾器(一種非常簡單的修飾器,因爲它不會向URI添加任何功能)。這在一些「duck-typed」語言中很容易,但在Java中更加痛苦,因爲我必須包裝一個URI並實現我需要的所有URI方法。有更容易的方法嗎?
當Thing是我的Response類的成員時,Response的JSON序列化是{「thing」:{「uri」:「http:// whatever」}}而不是{「thing」:「http://隨你」}。 – 2009-12-08 00:40:28