0

Я используя вспомогательный класс Java с несколькими статическими полями и методами:Более чистый доступ к статическим полям и методам?

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

Я пытаюсь придумать более чистым способом ссылаться на мои статические поля и методы, без необходимости повторять Имя класса TrackingHandler так много раз.

Я понимаю, что это не совсем та же идея, но что-то похожее на С # „используя“ было бы здорово:

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

Есть ли способ сделать это?

ответ

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?

Примечание: Если статический импорт используется без разбора, это, скорее всего, сделает код более трудным для понимания.

+0

Но постарайтесь не использовать статический импорт. Это не хорошая практика программирования. –