gpt4 book ai didi

java - 对最终类进行子类化;或者,一个退化的装饰器

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:58:25 24 4
gpt4 key购买 nike

我对同一种对象有多种不同的表示;让我们称之为一件事。 “事物”是一个标记界面。 ThingFormat0、ThingFormat1、ThingFormat2等都是实现了Thing的JavaBean。 (因为它们是 JavaBeans,JSON 编码器会自动将它们与 JSON 相互转换。)ThingFormat1 只有几个成员,如 name 和 id。 ThingFormat2 具有指向其他事物的 URI 链接。在 ThingFormat3 中有那些其他东西等的 ThingFormat1 表示。

JSON 序列化程序知道如何自动转换 URI。 (它适用于任何可以使用 toString() 和构造函数 ClassName(String string) 进行转换的类。)

我想要一个 ThingFormat0,它的行为类似于 URI,但实现了标记接口(interface) Thing。

public class ThingFormat0 extends URI implements Thing {}

这不起作用,因为 URI 是最终类,不能被子类化。

我能想到的唯一方法是制作一个装饰器(一种非常退化的装饰器,因为它不向 URI 添加任何功能)。这在一些“duck-typed”语言中很容易,但在 Java 中更痛苦,因为我必须包装一个 URI 并实现我需要的 URI 的所有方法。有没有更简单的方法?

最佳答案

我能想到的两种简单的方法:

  • 如果您使用 Eclipse,您可以为任何字段自动生成委托(delegate)方法。
  • 将 URI 的源复制到名为 ThingURI 的新类中。

关于java - 对最终类进行子类化;或者,一个退化的装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1854284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com