【发布时间】:2021-10-05 05:09:26
【问题描述】:
static:: 提供后期绑定,如果类的静态函数可以被扩展类覆盖并且静态方法是从类中调用的,那么这是必须的。但是在一个类不能扩展的情况下(比如它是final的)那么使用static::会不会错呢?
另一种问法,调用静态方法时的经验法则应该是什么,使用static::或self::,或者使用static::有这么大的缺点,你应该只使用它什么时候需要?
【问题讨论】:
-
我知道这可能是一种意见或与特定项目的编码标准有关,问题是试图了解是否对经验法则有某种共识。
-
“经验法则”是个坏主意,当可能有不同的选项可用时,它会鼓励盲目遵守一种程序。相反,请阅读每一种之间的差异,并确定哪一种最适合您遇到的每种情况。如果您不确定,请设置一个测试场景,看看在特定情况下其中一个或另一个是否有问题。
-
@aynber,我没有问区别,我问的是在最终类或最终方法中没有执行路径差异的情况