Как получить доступ к переменной внутреннего класса из другого пакета?

82
06 июня 2021, 13:00

Как в классе C получить доступ к переменной str внутреннего класса PubInnerClass, которая лежит в классе А, если она protected?

Вот класс А:

package Trash.ModAccess.A;
public class ClassA {
    public class PubInnerClass {
        protected   String str="word";
    }
}

Вот класс C:

package Trash.ModAccess.C;
import Trash.ModAccess.A.ClassA;
public class ClassC extends ClassA {
    public static void main(String[]args) {
    }
}
Answer 1

У вас классы ClassA и ClassC находятся в разных пакетах, чтобы был доступ к строке str из другого пакета, она должны быть public, либо вам нужно использовать Reflection API.

ClassA.PubInnerClass pubInnerClass = new ClassA().new PubInnerClass();
Field field = pubInnerClass.getClass().getDeclaredField("str");
field.setAccessible(true);
String str = (String)field.get(pubInnerClass);
System.out.println(str);

Вывод: word.

READ ALSO
Как вернуть код в начало и запустить?

Как вернуть код в начало и запустить?

Есть код через который можно выполнить вход прописав необходимый логин и пароль, если ты ввел логин неправильно то программа пишет "Error"

370
React input обновление последней буквы Есть ли изящное решение

React input обновление последней буквы Есть ли изящное решение

Есть React контрол с тегом input и дочерний контрол обрабатывающий введенное значение

99
Не выходит проверка на наличие в json нужного мне значения

Не выходит проверка на наличие в json нужного мне значения

Вот собственно сам код(я ещё новичок в js)

94