powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / getDeclaredField и setAccessible(true)
39 сообщений из 39, показаны все 2 страниц
getDeclaredField и setAccessible(true)
    #40049384
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Возник небольшой вопрос по доступу к приватным полям одного класса из другого класса.
По условию задачи нужно в классе B получить доступ к полю в классе A. Поле в классе A имеет модификатор доступа private.
Вопрос принципиальный , нужно именно пробить дыру только из класса B, без дополнительных методов обработчиков в классе A. (типа геттеров ,сеттеров,.. прочих методов)
Есть класс A:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class A {
    private static ArrayList<String> animals = new ArrayList<String>();
    public A(){
        animals.add("Кошка");
        animals.add("Мышь");
        animals.add("кошкомышь");
    }
}


Как видно из него у нас есть в поле приватная переменная типа private static ArrayList<String> animals;

И есть класс B, в котором я хочу получить доступ к данному ArrayList в классе А.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class B {
    public ArrayList<String> getAnimals() throws NoSuchFieldException {
        Field field = A.class.getDeclaredField("animals");
        field.setAccessible(true);
        ArrayList<String> arrayList = field.get(ЧЁ ТУТ ДОКРУТИТЬ,ИЛИ НЕ ТУТ?);
        return arrayList;
    }
}



Предполагаем по условию задачи, что на момент вызова метода getAnimals() из класса B, класс А уже инициализирован и список наполнен.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049394
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#get-java.lang.Object-If the underlying field is a static field, the obj argument is ignored; it may be null.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049403
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan,

Та не, все и со статик работает. Вы не ту страницу хелпа посмотрели:)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class B {
    public ArrayList<String> getAnimals() throws NoSuchFieldException, IllegalAccessException {
        final var animals = A.class.getDeclaredField("animals");
        animals.setAccessible(true);
        return (ArrayList<String>) animals.get(null);
    }
 
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        System.out.println(new B().getAnimals());
    }
}
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049433
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов, А где там написано, что со статик не работает?
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049436
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offЯ фигею с этих преподов. Заставляет студентов свой мокито делать.
Зря мы закрыли топик про смерть ООП. Вот тут она - смертушка. Воооот тут.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049438
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
offЯ фигею с этих преподов. Заставляет студентов свой мокито делать.
Зря мы закрыли топик про смерть ООП. Вот тут она - смертушка. Воооот тут.


Я периодически читаю топик здесь этот последний, где ООП умирает. Больше 40 страниц уже накатали.

Куда умирает то, стопэ, я только ворвался в Java, больше года чуть, нельзя умирать ООП.

Раньше писал в ФП стиле на другом языке, что вы там в ФП нашли уникального то?)
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049451
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Если вас интересует ООП, то зачем в статическое поле добавляется кошка из конструктора экземпляра?
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049452
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049478
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Сергей Лалов
Если вас интересует ООП, то зачем в статическое поле добавляется кошка из конструктора экземпляра?


Да кто их кошек поймёт, они всегда ведь сами по себе. По всей видимости первый класс просто был чтобы показать какое то статическое хранилище, в вакууме. Которое не зависит от количества инстансов)
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049480
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
mayton
offЯ фигею с этих преподов. Заставляет студентов свой мокито делать.
Зря мы закрыли топик про смерть ООП. Вот тут она - смертушка. Воооот тут.


Я периодически читаю топик здесь этот последний, где ООП умирает. Больше 40 страниц уже накатали.

Куда умирает то, стопэ, я только ворвался в Java, больше года чуть, нельзя умирать ООП.

Раньше писал в ФП стиле на другом языке, что вы там в ФП нашли уникального то?)


Процедурный стиль != ФП, не надо путать. Функциональное программирование совсем о другом. И да, ООП умирает
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049485
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник

Процедурный стиль != ФП, не надо путать. Функциональное программирование совсем о другом. И да, ООП умирает


Вы имеете в виду использование к примеру рекурсий, которые ближе всего находятся к математическому отображении вычислении к примеру какой либо функции, к примеру ченить такое f(x)=Ai+f(x).
Думаю не путаю. Использую .
Но в стеке повседневных задач проще реализовать выполнение функции в императивном стиле, где под капотом работают тот же самый набор процедур. Более читаемо и лучше редактировать.

Это следующая стадия, когда люди поймут ,что и чистый ФП в общем то не нужен))
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049487
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Не умрёт. Как и Рсубд.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049488
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
PetroNotC Sharp
Сергей Лалов
Если вас интересует ООП, то зачем в статическое поле добавляется кошка из конструктора экземпляра?


Да кто их кошек поймёт, они всегда ведь сами по себе. По всей видимости первый класс просто был чтобы показать какое то статическое хранилище, в вакууме. Которое не зависит от количества инстансов)
Ну по ООП пример не верен.
Поэтому чё его обсуждать на не верных исходных посылах.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049493
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего - лаба по рефлексии. В обычной ООП разработке - если тебе нужен доступ к полям - то ты либо
открываешь доступ модификаторами pub/protect/priv либо делаешь по дизайну соотв. геттеры.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049497
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Да. Поэтому слова ТС про ООП тут оффтоп. Лучше по теме пусть.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049498
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
забыл ник,
Не умрёт. Как и Рсубд.

РСУБД не умрет, ну в ближайшей перспективе, хотя ниша уменьшится. А от ООП останется только название, по факту оно уже так и есть. Все эти SOLID, иммутабельность, anemic model - лишь попытки натянуть сову на глобус.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049501
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
забыл ник

Процедурный стиль != ФП, не надо путать. Функциональное программирование совсем о другом. И да, ООП умирает


Вы имеете в виду использование к примеру рекурсий, которые ближе всего находятся к математическому отображении вычислении к примеру какой либо функции, к примеру ченить такое f(x)=Ai+f(x).
Думаю не путаю. Использую .
Но в стеке повседневных задач проще реализовать выполнение функции в императивном стиле, где под капотом работают тот же самый набор процедур. Более читаемо и лучше редактировать.

Это следующая стадия, когда люди поймут ,что и чистый ФП в общем то не нужен))

Тот случай когда много умных несвязанных по смыслу слов не делают фразу умнее в общем. ФП в первую очередь это перевод side-effectоф в управляемое русло, что приводит к лучшей композиции функций(когда то что делает функция определяется ее сигнатурой и если типы входа-выхода свопадают можно шлубоко не вникать в суть) и лучший local reasoning(когда для понимания куска системы достаточно знать входящие параметры и не нужно знать текущее состояние системы), эти два качества существенно уменьшают mental burden для девелопера, так что лучшая читаемость и редактируемость это прямо оксюморон. Не ну если речь о питоне или яваскрипте - то мб конечно...
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049507
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
PetroNotC Sharp
забыл ник,
Не умрёт. Как и Рсубд.

РСУБД не умрет, ну в ближайшей перспективе, хотя ниша уменьшится. А от ООП останется только название, по факту оно уже так и есть. Все эти SOLID, иммутабельность, anemic model - лишь попытки натянуть сову на глобус.

СтрашнО не само по себе ООП. Оно - суть воспитание правильного отношения к доменной модели.

А страшны его реализации в языках. Например чего стоит только поведение дефолтного конструктора в Java (его
отсутсвия вернее). Или чего стоит мультипарадигменность и ООП в С++. Вроде ООП есть - но лучшеб его и не было.
Хочется виртуальных функций? Ну - сделалибы как в JScript - зато сняли бы тяжелое бремя ООП. Был-бы прекрасный
необременённый ритуалами язык. А так - в технических спорах говорят что С++ - это ООП, но когда надо то
можно и его об колено сломать. Тоже самое с темой топика. Постулировано великими что приватное поле - недоступно
но хочется - то и рефлексия может его сломать. Зачем тогда оно вообще? Ребята зачем вам в ВАШЕМ коде ключевое
словов private? Вот какую оно пользу ВАМ принесло?

В новых языках, таких как Rust, GoLang, ООП - рудиментарно. Тоесть оно конечно есть - но уже не выглядит чем-то
обязательным и давлеющим. В одном из них даже keyword "class" отсуствует. В другом - не помню щас... вроде тоже нету.
Создатели Go - вообще следовали идее что если фича не очень нужна то ее вообще не стоит включать в язык. Тоесть
следовали минимализму. Сделан упор - на решение конкретной девопсовской или микро-сервисной задачи. А не на
следование высшим ритуалам ООП.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049511
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Скорее всего - лаба по рефлексии. В обычной ООП разработке - если тебе нужен доступ к полям - то ты либо
открываешь доступ модификаторами pub/protect/priv либо делаешь по дизайну соотв. геттеры.


Да, это задачка по рефлексии)
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049512
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
mayton
Скорее всего - лаба по рефлексии. В обычной ООП разработке - если тебе нужен доступ к полям - то ты либо
открываешь доступ модификаторами pub/protect/priv либо делаешь по дизайну соотв. геттеры.


Да, это задачка по рефлексии)
мало относящаяся к жизни и практике.
Редко её юзают.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049513
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ее в основном юзают фреймворки.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049526
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попалась мне где-то такая история ...
Сдаёт новобранец упражнение по стрельбе короткими очередями. Новобранец, то ли разрядник, то ли мастер спорта по стрельбе, ставит автомат на одиночный огонь и классно поражает все мишени. Сержант кроет его матом: "Короткими очередями, ...", а новобранец, весь такой невозмутимый: "Зачем? Я и одиночными прекрасно попадаю".
Самое смешное, что запостил это сообщение тот самый новобранец, который даже отслужив в армии и, вроде как, повзрослев - продолжал обижаться на "тупого сержанта".

Есть у человека учебная задача. Решение должно продемонстрировать навык, который (не) получил программист, а не всё то, о чём тут "философируется".
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049527
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Скорее всего - лаба по рефлексии....

Лечение простуты через ж.... это теперь называется "лаба по рефлексии" ?

Т.к. "setAccessible(true)" и "доступ к приватным полям" это проктология. При чем тут ООП совершенно не понятно.

IMHO
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049536
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
mayton
Скорее всего - лаба по рефлексии....

Лечение простуты через ж.... это теперь называется "лаба по рефлексии" ?

Т.к. "setAccessible(true)" и "доступ к приватным полям" это проктология. При чем тут ООП совершенно не понятно.

IMHO


Не знаю, у меня тема топика вообще не касалась ООП, и более того задача уже решена в третьем письме

Видимо народу нужна новая трибуна для обсуждения топика" ООП умирает". Ну послушать интересно, не возражаю)

PS. Можно ещё подлить масла в огонь, и обсудить новую фишку объявления переменных через var:
Код: java
1.
var users = new ArrayList<User>();



Java уже практически бейсиком стал))
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049537
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо выпить за правильные методики обучения. Побольше рефлексии.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049539
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Надо выпить за правильные методики обучения. Побольше рефлексии.


И эмпатии)
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049706
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
Сергей Лалов
пропущено...


Я периодически читаю топик здесь этот последний, где ООП умирает. Больше 40 страниц уже накатали.

Куда умирает то, стопэ, я только ворвался в Java, больше года чуть, нельзя умирать ООП.

Раньше писал в ФП стиле на другом языке, что вы там в ФП нашли уникального то?)

ООП не умрет пока есть спринг- ибо там все на интерфейсах ,а спринг это 99.9 % всех ентерпрайз проектов

пс.джава активно разивается и те плюшки ,которые были в скала,котлине и прочих ЯП медленно,но уверенно перекачевывают в джаву
поэтому ворвался ты в правильном направлении)


Ну нормально, значит живем !)
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049709
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
забыл ник


Процедурный стиль != ФП, не надо путать. Функциональное программирование совсем о другом. И да, ООП умирает

сейчас посмеялось Integer.MAX_VALUE ентерпрайз погромистов


Дело в том что ты не понимаешь что такое ООП Ну а чтобы найти ООП в спринге это вообще надо обладать даром проктолога-иллюзиониста. Задиристость это конечно хорошо, амебой быть скучно, но не надоело тебе раз за разом в говно окунаться то?
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049719
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79,
Интерфейсы это ООП?
)))))
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049872
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Zzz79,
Интерфейсы это ООП?
)))))


За что я люблю SQL.RU на протяжении уже 12 лет, так это за шоу паровозик, когда все участники шоу выстраиваются кругом друг за другом и начинают долбить друг друга по затылку, или еще куда))

Покажи пример классического ООП, самый лаконичный, чтобы мы все в этой ветке прослезились и сказали - во бл, так это же самое настоящее ООП, то самое , ОНО, ОГОГО!!!
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049875
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов

Покажи пример классического ООП, самый лаконичный, чтобы мы все в этой ветке прослезились и сказали - во бл, так это же самое настоящее ООП, то самое , ОНО, ОГОГО!!!

https://ru.wikipedia.org/wiki/Smalltalk ?

)))
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049883
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Не, ну тут не докопаться, как бы не писал ,и что бы не писал, будет чистое ООП
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049893
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
В чем вопрос?
У джунов спрашивают 3 принципа ООП.
Забыл что ли?
В rest блин их больше))))
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049898
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Сергей Лалов,
В чем вопрос?
У джунов спрашивают 3 принципа ООП.
Забыл что ли?
В rest блин их больше))))


Да ты стрелы на 4 парадигмы не кидай, мы их все знаем.
Просто просим показать самый лаконичный пример на Java правильного и самого ООПэшного способа кода по твоей версии
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049909
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
По моей версии нету такого. Программирование это компромисс.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049912
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

согласен)
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049944
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы тут недавно собаку от волка наследовали. Так и не дошли к консенсусу.

Непростая это задача. Широкая... Мдя.
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049954
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мы тут недавно собаку от волка наследовали. Так и не дошли к консенсусу.

Непростая это задача. Широкая... Мдя.


На самом деле в рамках одной системы такой консенсус достижим. В чем феерически врет ООП так это в реюзе компонентов(блоков), которые можно взять и перенести в другой проект. Слеза наворачивается вспоминая сколько User, Account и Order было мною написано Так что даже если унаследовать собаку от волка, до когда ты запустишь свою систему в Тамбове, то тот волк точно будет тебе не товарищ.
В целом же ООП - не основанный ни на каком математическим фундаменте дикий коктейль шаманских заклинаний, который передается от лида к джуну и у каждого тру девелопера свой рецепт ООП. Короче мусор
...
Рейтинг: 0 / 0
getDeclaredField и setAccessible(true)
    #40049959
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если верить википедии, волк понятие относительное ))).

Если брать Canis lupus rufus
то врят ли от него можно наследовать Canis lupus familiaris

они друг другу тупо паралельны на одном уровне иерархии, а наследовать их нужно от Canis lupus

IMHO. Если я правильно понимаю логику ООП.

https://ru.wikipedia.org/wiki/Псовые
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / getDeclaredField и setAccessible(true)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]