Хорошо, давайте оставим дискуссию о том, как дружба разрывает инкапсуляцию, и на самом деле попробуйте элегантно придумать согласованный дизайн. Это функция два раза:Внедрение друга (доступно на C++) в Java
1) Общий вопрос о том, как реализовать:
public class A
{
friend class B;
}
2) Зачем мне нужна эта функция? Некоторые из моих классов реализуют интерфейс Serializable. Тем не менее, я хочу сделать методы Serializable защищенными в классе Derived, чтобы я не выставлял их клиенту (а также в документации - javadoc). Однако внутренние классы должны иметь к ним доступ. Каков общий способ решения этой проблемы в java?
Примечание: Я использую дружбу, определенную в текущем стандарте C++.
Благодаря
ли Java поддерживает «внутренний» модификатор, такой как C#? В C# вы можете использовать внутреннее, чтобы сделать вещи видимыми только в одной сборке. – OregonGhost
Действительно недостаточно информации. В любом случае, если методы serialisable не являются приватными. –
Да, вам не нужен доступ к методам сериализации для сериализации объектов. Это кажется аргументированным, а не вопросом ... – wds