afr*_*ish 4 java memory import performance constants
在过去,我经常在Java类中使用"import static"构造.最近我意识到,而不是
import static my.pack.A.MY_CONSTANT;
Run Code Online (Sandbox Code Playgroud)
您可以使用
import my.pack.A;
public class B {
private static final MY_CONSTANT = A.MY_CONSTANT;
}
Run Code Online (Sandbox Code Playgroud)
这种方法最明显的优点是:
A.B.C.CONSTANT.ANOTHER_ONE.TOO_LONG从代码中删除所有长常量表达式,而不会弄乱静态导入(在Eclipse中不能很快掌握)例如:
private static final PAYMENT_TYPE = PaymentType.CASH;
...
calculateSomething(amount, PAYMENT_TYPE);
Run Code Online (Sandbox Code Playgroud)
代替
import static my.pack.PaymentType.CASH
...
calculateSomething(amount, CASH);
Run Code Online (Sandbox Code Playgroud)
如果默认的PaymentType值更改为CREDIT_CARD,这也更容易重构.
我的问题是:与静态导入相比,这种方法有任何缺点,还是可以在任何地方使用?
我现在唯一关心的是生成的编译.class文件,这可能与所描述的两种方法不同.因此,理论上性能和内存使用可能会受到影响.
我认为唯一的缺点是你有更多的代码,你可以将一个常量分配给另一个常量.除此之外应该没有区别.性能和内存无关紧要,您可能会有更多的引用返回到相同的常量池条目.即使它创建了单独的常量池条目,也需要很多它们才能产生影响.
在重命名原始条目的情况下,能够为常量提供好名称可能是一件非常好的事情.
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |