什么时候不宜在方法签名上使用Java中的static关键字?如果方法基于某些参数执行功能,并且不需要访问非静态字段,那么您是否不总是希望这些类型的方法都是静态的?

最佳答案

您可能不希望它为静态的原因之一是允许它在子类中被覆盖。换句话说,行为可能不取决于对象内的数据,而是取决于对象的确切类型。例如,您可能具有常规的集合类型,其isReadOnly属性将在始终可变的集合中返回false,在始终可变的集合中返回true,并依赖于其他实例变量。

但是,根据我的经验,这非常罕见-为了清楚起见,通常应明确指定。通常我会创建一个不依赖于任何对象状态静态的方法。

10-07 23:28