Как использовать статический импорт на классах одного и того же пакета в Java - PullRequest
0 голосов
/ 21 июня 2019

В моем пакете проекта "pypapo.alphabet" я хотел бы иметь один класс "alphabetStatic", который содержит все часто используемые переменные (пути, каталоги, файлы, константы и т. Д.) В качестве статических конечных полей во всем проекте.Чтобы не заполнять код других классов префиксом «alphabetStatic» каждый раз, когда я получаю доступ к одному из этих статических конечных полей, я хотел бы выполнить своего рода «импорт статического alphabetStatic».Я знаю, что оператор статического импорта относится к классам пакета.Однако можно ли импортировать поля класса таким образом?

Ответы [ 3 ]

1 голос
/ 21 июня 2019

Ничто не мешает вам импортировать пакет X из внутри пакет X.

Итак

import static status pypapo.alphabet.alphabetStatic.*;

определенно должен работать для вас.

1 голос
/ 21 июня 2019

Я знаю, что статический оператор импорта относится к классам пакета.

Не совсем.Это относится к static членам класса.
Вы можете использовать import static с полным именем класса. * (Для обозначения любого статического члена класса) или с определенным статическим полем или методом класса.

Например, чтобы выполнить импорт static определенного статического поля или метода класса, это синтаксис:

import static packages.Clazz.fieldOrMethod;

1) пример статического поля

Таким образом, вы можете сделать это, чтобы импортировать статическую out форму поля System:

import static java.lang.System.out;

и использовать ее:

out("...");

1) пример статического метода: тот же синтаксис.

import static org.junit.jupiter.api.Assertions.assertEquals*;

И используйте его:

assertEquals(expected, actual);

3) Все статические члены класса

Просто добавьте суффикс с подстановочным знаком:

import static org.junit.jupiter.api.Assertions.*;
0 голосов
/ 21 июня 2019

Попробуйте это:

import static pypapo.alphabet.AlphabetStatic.*;

Обратите внимание, что имена классов в Java должны начинаться с заглавной буквы.

...