我正在阅读 http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-137265.html#587 中的 Java 代码约定.
其中,他们提到我们应该避免使用对象来访问类变量或方法,而应该使用类名。
Avoid using an object to access a class (static) variable or method. Use a class name instead. For example:
classMethod(); //OK AClass.classMethod(); //OK anObject.classMethod(); //AVOID!
在性能或其他方面是否有特殊原因?
最佳答案
通过类变量,我假设您指的是静态变量。
应避免通过实例变量使用静态变量/方法,因为这会让读者感到困惑。由于只能使用实例来访问实例变量,因此阅读通过实例调用静态方法的代码可能会让读者对发生的情况感到困惑。
使用Thread.sleep
来想象这种情况,这是一个静态方法:
Thread.sleep(1000);
由于该方法是静态的,并且我们通过类名调用它,因此读者可以直观地推断出效果是使当前线程进入休眠状态。
现在如果我们这样做:
Thread t = new Thread(...);
t.sleep(1000);
现在哪个线程处于 hibernate 状态?当前的这一点“显然”。不了解 sleep 如何工作的人可能会认为子线程以某种方式进入休眠状态。
关于java - 为什么在 Java 中使用类名而不是对象来访问类方法或变量更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245092/