Java - 配置模式

问题描述 投票:2回答:1

我想确保我的对象(Class <? extends Object>)被妥善处理,因为其他实例可能包含他们使用的数据。例如,秘密数据的DEK / KEK对。

由于覆盖finalize()通常不受欢迎,如何将IDE警告并强制开发人员调用dispose() iff将Object引用设置为null,或者将自动设置为null(示例退出方法)?

假设源代码在我的直接控制之下,IDE就是Netbeans。

java dispose
1个回答
0
投票

首先,值得一提的是,终结者在Java 9中被弃用,而不是Cleaner。可能这将是我将在下面描述的更好的选择。虽然没有尝试过。

谈到问题本身:我会尝试这样做:

  1. 假设有一个类型A的对象,它实现了Closeable
  2. 使用唯一的方法创建一个类S:void execute(Consumer<A> consumer)
  3. 在方法execute:实例化A类型的对象,将其传递给消费者(accept)然后关闭它。
  4. 在客户端代码中 - 始终使用S,将lambda作为使用者传递给它。在lambda中 - 你将得到A和S的实例将保证它的处置。
  5. 使所有构造函数对类A的可见性仅限于服务S(例如,使它们成为包私有,并将A放在与S相同的包中)。这将阻止A在S之外被实例化并且不受管理。
© www.soinside.com 2019 - 2024. All rights reserved.