是否可能 - 通过编译器开关或常用工具(我不知道) - 如果在未标记为可变关键字时重新分配变量(在Java中尚不存在),则可以中断编译)?
示例:
Contract a; // compile error
Contract b = getContract(id); // ok
b.doSomething(); // ok
b = getContract(otherId); // compile error
mutable int i = 1;
i++; // ok
我知道有些语言是这样的,但是被迫在公司中编写java代码,使用这样的工具是唯一的选择。
问候, JG。
答案 0 :(得分:2)
查看CheckStyle静态代码分析工具。您还可以将其集成到IDE中。
FinalLocalVariable
检查看起来像你的情况:
检查从未更改过值的局部变量 宣布决赛。可以将检查配置为也检查 未更改的参数被声明为final。
还有PMD源代码分析器。但是我从未使用它,因此无法提出任何建议。
答案 1 :(得分:1)
不,你不能强迫Java编译器这样做。而且您不能将非Java关键字(如mutable
)放入Java源代码中。没有兼容的Java编译器将允许其中任何一个。
您可以使用自定义注释来声明"可变局部变量,并使用静态分析器检测没有注释的本地分配。
甚至可能会有现有的分析工具,注释等为您完成此操作,但我不知道一个完全适合该法案的工具。
(CheckStyle的FinalLocalVariable
检查并不能完全符合您的要求。它会告诉您将final
添加到声明的位置,但这并不是您要求的for ...我想。你希望变量被处理为final
,即使它们没有被明确声明为这样。)
但在我看来,这样做是不错的主意。
您的雇主已做出决定(对或错),Java是您可以使用的唯一语言。其中一个原因将确保Java程序员可以维护和增强您开发的代码。通过使用不常见的符号使您可以编写零分配代码,您正在破坏公司政策。
充其量,通过这样做,你不会让自己受到同事的欢迎。