【问题标题】:Cleaner access to static fields and methods?更清洁地访问静态字段和方法?
【发布时间】:2023-03-23 14:36:01
【问题描述】:

我正在使用带有几个静态字段和方法的 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));
}

有没有办法做到这一点?

【问题讨论】:

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


    【解决方案1】:

    你可以使用static imports:

    import static yourpackagename.TrackingHandler.*;
    

    然后只使用静态成员:

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

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

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

    那么什么时候应该使用静态导入呢?非常谨慎!仅当您想要声明常量的本地副本或滥用继承(常量接口反模式)时才使用它。

    推荐阅读:

    1. What does the “static” modifier after “import” mean?
    2. JLS 7.5.3 and 7.5.4
    3. Should I use static import?

    注意:如果不加选择地使用静态导入,可能会使代码更难理解。

    【讨论】:

    • 但尽量不要使用静态导入。它们不是很好的编程习惯。
    猜你喜欢
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2017-08-19
    • 2012-01-28
    相关资源
    最近更新 更多