Как спрятать несколько файлов от пользователя в банке? - PullRequest
0 голосов
/ 23 июня 2011

У меня есть набор классов, которые я хочу инкапсулировать в файл jar. Но только некоторые из этих классов должны быть «видимы» для пользователя. Под видимым я подразумеваю, что я хочу, чтобы классы были общедоступными, а остальные - частными. Но когда я использую «защищенную» видимость по умолчанию для широковещательных получателей и отправляю намерение из другого пакета, это дает мне исключение IllegalAccessException. Любые намеки на то, как этого можно достичь?

1 Ответ

0 голосов
/ 23 июня 2011

Единственный раз, когда class должен быть закрытым или "скрытым", это когда он является внутренним классом.Если вы пытаетесь удержать других от использования ресурсов ваших классов, вы можете оставить модификатор выключенным (частным, общедоступным, защищенным), что сделает пакет класса защищенным (по умолчанию, когда модификатор отсутствует).

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

package com.test;

class Test {

}

Где этот класс будет доступен вне пакета:

package com.test;

public class Test {

}

Однако,в этом сценарии другой человек может использовать имя пакета com.test и может использовать ваш класс.

Если вы хотите жестко контролировать использование классов, вы можете пометить их какpublic final.Это сделает так, что ваш класс не может быть расширен.Затем вы можете сделать конструктор частным, чтобы класс не мог быть создан.Если вы сделаете это, вам, скорее всего, понадобятся static методы, которые возвращают новые объекты класса, с которым вы имеете дело.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...