это на самом деле невозможно в Java 6, если вы не используете OSGI, что, я полагаю, не так.что я обычно делаю, чтобы скрыть классы, это использовать дружественные к пакету классы для реализаций, но вам все равно может понадобиться предоставить некоторые классы, если ваши классы реализации действительно живут в отдельном пакете.
sample:
package com.example;
public class Service { }
предположим, что класс API использует ServiceImpl
в качестве своей реализации
теперь, если ServiceImpl
живет в том же пакете, вы можете удалить его общедоступныммодификатор класса, и он не будет доступен вне пакета ...
если он находится в другом пакете (ваш случай), он должен быть общедоступным:
package com.example.impl;
public class ServiceImpl { }
но все детали реализации (связанные с ним классы) из одного и того же пакета не должны быть общедоступными!