看起来非常简单: 例如,如果存在任何非最终字段访问,则处理器将给出错误的类上的@Immutable。它必须确保所有合作者也是不可改变的。
@ReferentiallyTransparent(更好的名字?)可以放在方法上,然后检查以确保所有的调用和协作者也被标记为@RefTrans和@Immutable ......
答案 0 :(得分:2)
您可能会对以下文章感兴趣:Verifiable Functional Purity in Java
摘要:
证明代码库中的特定方法是功能性的 纯粹的确定性和副作用 - 将有助于核实 安全属性包括功能可逆性,可重复性 计算和不受信任的代码执行的安全性。到现在为止 无法自动证明方法是功能性的 纯粹在广泛使用的高级命令式语言中,例如 Java的。我们讨论了一种证明方法在功能上的技术 通过在称为Joe-E的Java子集中编写程序来实现纯粹的;静止的 验证程序确保程序属于子集。在Joe-E中,纯粹 方法签名可以简单地识别方法。至 证明了我们方法的实用性,我们重构了AES 库,实验投票机实现和HTML 解析器使用我们的技术。我们证明了他们的顶级方法 是可验证的纯粹,并显示这如何提供高级别的安全性 保证这些常规。我们的可验证纯度的方法 是一种允许功能性推理的有吸引力的方法 安全属性,同时利用熟悉性,便利性和 命令式语言的遗留代码。