更清晰地访问静态字段和方法?

时间:2013-07-23 15:59:14

标签: java static static-methods static-members syntactic-sugar

我正在使用带有几个静态字段和方法的Java帮助器类:

doSomething(doableThing, TrackingHandler.EVENT_AREA_FINANCE, TrackingHandler.SUCCEEDED(TrackingHandler.EVENT_KEY_THING));

我正试图想出一种更简洁的方法来引用我的静态字段和方法,而不必多次重复TrackingHandler类名。

我意识到它的想法并不完全相同,但类似于C#的“使用”的东西会很棒:

using TrackingHandler
{
    doSomething(doableThing, EVENT_AREA_FINANCE, SUCCEEDED(EVENT_KEY_THING));
}

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

您可以使用static imports

import static yourpackagename.TrackingHandler.*;

然后只使用静态成员:

doSomething(doableThing, EVENT_AREA_FINANCE, SUCCEEDED(EVENT_KEY_THING));
  

静态导入构造允许对静态成员进行非限定访问,而不从包含静态成员的类型继承。

     

静态导入声明类似于普通导入声明。如果正常的导入声明从包中导入类,允许它们在没有包限定的情况下使用,静态导入声明从类中导入静态成员,允许它们在没有类限定的情况下使用。

     

那么什么时候应该使用静态导入?非常谨慎!只有在您试图声明常量的本地副本或滥用继承(Constant Interface Antipattern)时才使用它。

建议阅读:

  1. What does the “static” modifier after “import” mean?
  2. JLS 7.5.3 and 7.5.4
  3. Should I use static import?
  4. 注意:如果不加选择地使用静态导入,可能会使代码更难理解。