Buduję bardzo prostą bibliotekę w Javie, która zostanie spakowana w jednym słoiku. Powinien eksponować tylko jedną klasę: Świat. Klasa World używa podklas klasy Block, która znajduje się w tym samym pakiecie (com.yannbane.a
) i nie zapewnia dużej liczby funkcji, ale musi zostać rozszerzona. Planowałem stworzyć kolejną paczkę, com.yannbane.a.blocks
, która miałaby wszystkie typy bloków (podklasy).Pakiety i klasy Java
Struktura katalogu/pakiet powinny do nich wyglądać następująco: w porządku dla podklas Bloku rzeczywiście rozszerzyć klasę Zablokuj, potrzebowałem
com/
yannbane/
a/
World.java
Block.java
blocks/
Brick.java
Stone.java
Jednak aby klasę Zablokuj public
. To niszczy mój cel polegający na tym, że plik Jar przedstawia tylko jedną klasę, Świat. Muszę również udostępnić podklasy publicznie, aby świat mógł z nich korzystać.
Jak mogę zachować tę strukturę paczek i katalogów, ale nadal mam Jar tylko eksponować klasę światową, a nie inne?
* Dlaczego * trzeba udostępnić podklasy? To nie jest jasne ... –
czy możesz zablokować wewnętrzną klasę dla świata, która jest prywatna i niedostępna z zewnątrz? – amphibient
Jeśli wszystko, co zamierzasz ujawnić, to klasa światowa, dlaczego ma znaczenie, gdzie znajdują się inne klasy. Równie dobrze mogą znajdować się w tej samej paczce, a Ty nie masz takich problemów. Nie sądzisz? –