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

137
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"

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

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

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

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

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

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

152