buf
является защищенной переменной:
26 package java.io;
...
45 public class ByteArrayOutputStream extends OutputStream {
46
47 /**
48 * The buffer where data is stored.
49 */
50 protected byte buf[];
Так только 2 способа доступа к ней:
- выставляя его, как вы делали или
- доступа к нему из класса в
java.io
пакет
Я не вижу никакого способа «изменить видимость». Однако я бы спросил, почему я хочу сделать эту внутреннюю переменную общедоступной, рискуя иметь проблемы с Liskov substitution principle.
Защищенные переменные обычно имеют некоторую внутреннюю инвариантность , связанную с ними (иначе они были бы общедоступными). Затем наследующим устройствам необходимо для поддержания тех свойств, которые люди могут испортить или умышленно нарушить. .
Базовый класс, вероятно, делает много предположений о buf
не доступ извне к не нарушают Open/closed principle.
Я предпочел бы сосредоточиться на «композиции предпочтения над наследованием».
Я думаю, что это невозможно. Что не так с вашим решением? –