我已经看到,有时类中不依赖于实例状态的方法被标记为static
。我发现它很清楚,因为它宣称“这种方法独立于实例状态'”。在审查不一致状态的可能性时,很容易跳过该方法。
但是,将方法标记为静态的问题是静态方法不能被继承或覆盖。
这里讨论的内容如下:Does it make sense to have a non static method which does not use an instance variable?
有一个注释来声明非静态方法是否与状态无关是否有意义?然后编译器可以验证它仅使用其他与状态无关的方法。
管道中是否有这样的功能?
答案 0 :(得分:1)
java中没有这样的机制。即使static
也未涵盖所有情况。静态方法仍然可以在静态上下文中更改状态。
class Example {
static int counter = 0;
static int add(int a, int b) {
counter++;
return a + b;
}
}
但是有一些研究使用静态分析来解决这个问题。看起来JPure有一个工作原型