Java 10, Intellij Warning (класс не экспортируется, доступ в том же модуле)

Swift 3

let allowedQueryParamAndKey =  NSCharacterSet.urlQueryAllowed.remove(charactersIn: ";/?:@&=+$, ")
paramOrKey.addingPercentEncoding(withAllowedCharacters: allowedQueryParamAndKey)

Swift 2.2 (Заимствование из Zaph и исправление для ключа запроса и значений параметров)

var allowedQueryParamAndKey =  NSCharacterSet(charactersInString: ";/?:@&=+$, ").invertedSet
paramOrKey.stringByAddingPercentEncodingWithAllowedCharacters(allowedQueryParamAndKey)

Пример:

let paramOrKey = "https://some.website.com/path/to/page.srf?a=1&b=2#top"
paramOrKey.addingPercentEncoding(withAllowedCharacters: allowedQueryParamAndKey)
// produces:
"https%3A%2F%2Fsome.website.com%2Fpath%2Fto%2Fpage.srf%3Fa%3D1%26b%3D2%23top"

Это более короткая версия ответа Брайана Чена. Я предполагаю, что urlQueryAllowed позволяет управляющим символам, через которые прекрасно, если они не составляют часть ключа или значения в строке запроса, в какой момент они должны быть экранированы.

3
задан Naman 19 February 2019 в 05:08
поделиться

1 ответ

Если вы расширите предупреждающее сообщение, вы найдете его причину

Кроме того, в Java 9 модуль может скрывать некоторые из своих классов, не экспортируя свои пакеты. [ 1110]

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

Причина, по которой такой API бесполезен, состоит в том, что никакой другой модуль не может создать экземпляр класса / access Server.

Примечательно, что в дескриптор вашего модуля вы включили

opens com.money.heist.server.core.network to com.google.guice;

, который обеспечит доступ во время выполнения, но не во время компиляции (возможно, причина, по которой IntelliJ не имеет смысла) к типам public и protected в пакете, а также к элементам public и protected этих типов к модулям, для которых они открыты.

В связи с вышесказанным, если вы измените директиву opens на exports, вы больше не увидите предупреждение от IntelliJ.

0
ответ дан Naman 19 February 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: