gpt4 book ai didi

java - 导入静态与静态最终

转载 作者:搜寻专家 更新时间:2023-11-01 01:44:45 24 4
gpt4 key购买 nike

过去我经常在 Java 类中使用“import static”构造。最近我意识到,而不是

import static my.pack.A.MY_CONSTANT;

你可以使用

import my.pack.A;

public class B {
private static final MY_CONSTANT = A.MY_CONSTANT;
}

这种方法最明显的优点是:

  1. 您可以在 Eclipse 中使用重构轻松地从代码中删除所有长常量表达式,例如 A.B.C.CONSTANT.ANOTHER_ONE.TOO_LONG,而不会弄乱静态导入(这在 Eclipse 中掌握起来不是那么快)
  2. 您可以为任何表达式取任何名称,这在当前上下文中可能更有意义。

例如:

private static final PAYMENT_TYPE = PaymentType.CASH;
...
calculateSomething(amount, PAYMENT_TYPE);

代替

import static my.pack.PaymentType.CASH
...
calculateSomething(amount, CASH);

如果默认的 PaymentType 值更改为 CREDIT_CARD,这也更容易重构。

我的问题是:与静态导入相比,这种方法有什么缺点吗?或者它可以在任何地方使用吗?

我现在唯一关心的是生成的编译后的 .class 文件,这对于所描述的两种方法来说可能是不同的。因此,性能和内存使用在理论上可能会受到影响。

最佳答案

我认为唯一的缺点是你有更多的代码,你需要将一个常量分配给另一个常量。除此之外应该没有区别。性能和内存应该无关紧要,您可能会对相同的常量池条目有更多的引用。即使它创建了单独的常量池条目,也需要大量条目才能发挥作用。

在无法重命名原始条目的情况下,能够为常量命名可能是一件非常好的事情。

关于java - 导入静态与静态最终,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14584488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com