Скорее всего, ваш дизайн немного не в порядке. В действительности не должно быть необходимости иметь функцию друга, и поэтому Java не включила ее в свой язык. Функции должны находиться рядом с местом расположения используемых им данных, а если нет, то эти данные должны передаваться в функцию в качестве параметра. На мой взгляд, Friend Functions идут вразрез с основными идеями ОО-программирования. C ++ склонен разрешать вам создавать не OO-программы, даже если язык полностью поддерживает концепции, в которые верит OO-программирование.
Я бы рассмотрел изменение вашего дизайна, чтобы приблизить функциональность к месту, в котором находятся данные, тогда у вас действительно не будет этой проблемы. Однако это не всегда возможно, особенно если вы работаете с устаревшей системой. В этом случае вы должны учитывать классы адаптеров, методы получения и установки или параметры. Просто мои два цента.