首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - dispose模式

Java - dispose模式
EN

Stack Overflow用户
提问于 2017-12-20 08:59:19
回答 1查看 1.3K关注 0票数 3

我希望确保正确地处理我的对象(Class <? extends Object>),因为其他实例可能包含它们使用的数据。例如,用于机密数据的DEK/KEK对。

由于通常不赞成重写finalize(),所以如何使IDE警告和强制开发人员调用dispose(),如果对象引用设置为null,或者将自动设置为null (例如退出方法)?

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

EN

回答 1

Stack Overflow用户

发布于 2017-12-20 09:40:53

首先,值得一提的是,Java9中反对终结器,而支持更干净的。这可能是比下面我要描述的更好的选择。不过还没试过。

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

  1. 假设有一个类型为A的对象,它实现了Closeable
  2. 使用唯一的方法:void execute(Consumer<A> consumer)创建一个S类。
  3. 在方法execute:实例化A类型的对象时,将其传递给使用者(accept),然后关闭它。
  4. 在客户端代码中--始终使用S,将lambda作为消费者传递给它。在lambda中,您将得到A的实例,而S将保证它的处理。
  5. 使A类的所有构造函数的可见性仅限于服务S(例如,使它们成为包-私有,并将A放在与S相同的包中)。这将防止A在S之外实例化并保持非托管。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47902160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档