Подтвердить что ты не робот

Что означает "Может быть местным пакетом"? (Инспекция IDEA)

Я использовал IntelliJ для "Inspect Code", и один из его результатов:

Краткий обзор проблемы Может быть локальным (по строке 18 (public class HeartBeat))

Что это значит, как я могу его исправить?

весь этот класс выглядит следующим образом:

package com.xxxxxxxxxxx.app.xxxx;

public class HeartBeat
{
    private static final Logger LOG = LoggerFactory.getLogger( HeartBeat.class );
    private final File heartBeatFile;


    public HeartBeat( File heartBeatFile )
    {
        this.heartBeatFile = heartBeatFile;
    }


    public void beat()
    {
        try
        {
            FileUtils.writeStringToFile( heartBeatFile, String.valueOf( System.currentTimeMillis() ) );
        }
        catch( IOException e )
        {
            LOG.error( "Error while writing heart beat log", e );
        }
    }
}
4b9b3361

Ответ 1

IDEA ссылается на видимость пакета-частного.

Класс может быть объявлен с помощью модификатора public, и в этом случае этот класс будет виден всем классам. Если класс не имеет модификатора (по умолчанию, также известного как private-package), он отображается только в пределах его собственного пакета

Для получения дополнительной информации см. Управление доступом к членам класса.

Вы можете решить эту проблему, удалив ключевое слово public из класса (если класс не предназначен для использования вне пакета) или с помощью класса из другого пакета.

Ответ 2

Если вы хотите пресечь это предупреждение:

  • Перейдите в раздел "Настройки" → "Редактор" → "Инспекции"
  • Перейти к Java → Резервирование декларации
  • Выберите "Доступ к декларации может быть слабее"
  • Снимите флажки "Предложить пакет локальной видимости..." на право

Ответ 3

Иногда lint ошибается. Каждое из этих предупреждений lints может быть подавлено на один за другим с помощью следующего кода.

@SuppressWarnings("WeakerAccess")

Ответ 4

Ваш класс HeartBeat не используется нигде вне пакета com.xxxxxxxxxxx.app.xxxx. В этом случае вы можете объявить класс "protected" или 'private' более точным в своем доступе.

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

например:.

protected class HeartBeat {
    ...
}

Ответ 5

Исходя из фона Android-приложения, вам также необходимо учитывать, что иногда эти предупреждения являются избыточными. Поэтому для классов debug build это может быть package local, но для release build оно может использоваться вне пакета.

Я отключил его в конце, а ответ @ashario был очень полезен в поиске того, как это сделать.