我对同一种对象有许多不同的表示;让我们称之为事物。“事物”是一个标记界面。ThingFormat0、ThingFormat1、ThingFormat2等都是实现Thing的JavaBean。(因为它们是 JavaBean,所以 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 方法。有没有更简单的方法?