|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Привет! Возник небольшой вопрос по доступу к приватным полям одного класса из другого класса. По условию задачи нужно в классе B получить доступ к полю в классе A. Поле в классе A имеет модификатор доступа private. Вопрос принципиальный , нужно именно пробить дыру только из класса B, без дополнительных методов обработчиков в классе A. (типа геттеров ,сеттеров,.. прочих методов) Есть класс A: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Как видно из него у нас есть в поле приватная переменная типа private static ArrayList<String> animals; И есть класс B, в котором я хочу получить доступ к данному ArrayList в классе А. Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Предполагаем по условию задачи, что на момент вызова метода getAnimals() из класса B, класс А уже инициализирован и список наполнен. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2021, 17:26 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2021, 18:57 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
SpringMan, Та не, все и со статик работает. Вы не ту страницу хелпа посмотрели:) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2021, 20:07 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Сергей Лалов, А где там написано, что со статик не работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 00:01 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
offЯ фигею с этих преподов. Заставляет студентов свой мокито делать. Зря мы закрыли топик про смерть ООП. Вот тут она - смертушка. Воооот тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 01:11 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
mayton offЯ фигею с этих преподов. Заставляет студентов свой мокито делать. Зря мы закрыли топик про смерть ООП. Вот тут она - смертушка. Воооот тут. Я периодически читаю топик здесь этот последний, где ООП умирает. Больше 40 страниц уже накатали. Куда умирает то, стопэ, я только ворвался в Java, больше года чуть, нельзя умирать ООП. Раньше писал в ФП стиле на другом языке, что вы там в ФП нашли уникального то?) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 02:29 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Сергей Лалов Если вас интересует ООП, то зачем в статическое поле добавляется кошка из конструктора экземпляра? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 07:43 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 07:43 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Сергей Лалов Если вас интересует ООП, то зачем в статическое поле добавляется кошка из конструктора экземпляра? Да кто их кошек поймёт, они всегда ведь сами по себе. По всей видимости первый класс просто был чтобы показать какое то статическое хранилище, в вакууме. Которое не зависит от количества инстансов) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 10:59 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Сергей Лалов mayton offЯ фигею с этих преподов. Заставляет студентов свой мокито делать. Зря мы закрыли топик про смерть ООП. Вот тут она - смертушка. Воооот тут. Я периодически читаю топик здесь этот последний, где ООП умирает. Больше 40 страниц уже накатали. Куда умирает то, стопэ, я только ворвался в Java, больше года чуть, нельзя умирать ООП. Раньше писал в ФП стиле на другом языке, что вы там в ФП нашли уникального то?) Процедурный стиль != ФП, не надо путать. Функциональное программирование совсем о другом. И да, ООП умирает ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:00 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
забыл ник Процедурный стиль != ФП, не надо путать. Функциональное программирование совсем о другом. И да, ООП умирает Вы имеете в виду использование к примеру рекурсий, которые ближе всего находятся к математическому отображении вычислении к примеру какой либо функции, к примеру ченить такое f(x)=Ai+f(x). Думаю не путаю. Использую . Но в стеке повседневных задач проще реализовать выполнение функции в императивном стиле, где под капотом работают тот же самый набор процедур. Более читаемо и лучше редактировать. Это следующая стадия, когда люди поймут ,что и чистый ФП в общем то не нужен)) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:20 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
забыл ник, Не умрёт. Как и Рсубд. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:25 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Сергей Лалов PetroNotC Sharp Сергей Лалов Если вас интересует ООП, то зачем в статическое поле добавляется кошка из конструктора экземпляра? Да кто их кошек поймёт, они всегда ведь сами по себе. По всей видимости первый класс просто был чтобы показать какое то статическое хранилище, в вакууме. Которое не зависит от количества инстансов) Поэтому чё его обсуждать на не верных исходных посылах. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:27 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Скорее всего - лаба по рефлексии. В обычной ООП разработке - если тебе нужен доступ к полям - то ты либо открываешь доступ модификаторами pub/protect/priv либо делаешь по дизайну соотв. геттеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:42 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
mayton, Да. Поэтому слова ТС про ООП тут оффтоп. Лучше по теме пусть. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:57 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp забыл ник, Не умрёт. Как и Рсубд. РСУБД не умрет, ну в ближайшей перспективе, хотя ниша уменьшится. А от ООП останется только название, по факту оно уже так и есть. Все эти SOLID, иммутабельность, anemic model - лишь попытки натянуть сову на глобус. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 11:59 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Сергей Лалов забыл ник Процедурный стиль != ФП, не надо путать. Функциональное программирование совсем о другом. И да, ООП умирает Вы имеете в виду использование к примеру рекурсий, которые ближе всего находятся к математическому отображении вычислении к примеру какой либо функции, к примеру ченить такое f(x)=Ai+f(x). Думаю не путаю. Использую . Но в стеке повседневных задач проще реализовать выполнение функции в императивном стиле, где под капотом работают тот же самый набор процедур. Более читаемо и лучше редактировать. Это следующая стадия, когда люди поймут ,что и чистый ФП в общем то не нужен)) Тот случай когда много умных несвязанных по смыслу слов не делают фразу умнее в общем. ФП в первую очередь это перевод side-effectоф в управляемое русло, что приводит к лучшей композиции функций(когда то что делает функция определяется ее сигнатурой и если типы входа-выхода свопадают можно шлубоко не вникать в суть) и лучший local reasoning(когда для понимания куска системы достаточно знать входящие параметры и не нужно знать текущее состояние системы), эти два качества существенно уменьшают mental burden для девелопера, так что лучшая читаемость и редактируемость это прямо оксюморон. Не ну если речь о питоне или яваскрипте - то мб конечно... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 12:05 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
забыл ник PetroNotC Sharp забыл ник, Не умрёт. Как и Рсубд. РСУБД не умрет, ну в ближайшей перспективе, хотя ниша уменьшится. А от ООП останется только название, по факту оно уже так и есть. Все эти SOLID, иммутабельность, anemic model - лишь попытки натянуть сову на глобус. СтрашнО не само по себе ООП. Оно - суть воспитание правильного отношения к доменной модели. А страшны его реализации в языках. Например чего стоит только поведение дефолтного конструктора в Java (его отсутсвия вернее). Или чего стоит мультипарадигменность и ООП в С++. Вроде ООП есть - но лучшеб его и не было. Хочется виртуальных функций? Ну - сделалибы как в JScript - зато сняли бы тяжелое бремя ООП. Был-бы прекрасный необременённый ритуалами язык. А так - в технических спорах говорят что С++ - это ООП, но когда надо то можно и его об колено сломать. Тоже самое с темой топика. Постулировано великими что приватное поле - недоступно но хочется - то и рефлексия может его сломать. Зачем тогда оно вообще? Ребята зачем вам в ВАШЕМ коде ключевое словов private? Вот какую оно пользу ВАМ принесло? В новых языках, таких как Rust, GoLang, ООП - рудиментарно. Тоесть оно конечно есть - но уже не выглядит чем-то обязательным и давлеющим. В одном из них даже keyword "class" отсуствует. В другом - не помню щас... вроде тоже нету. Создатели Go - вообще следовали идее что если фича не очень нужна то ее вообще не стоит включать в язык. Тоесть следовали минимализму. Сделан упор - на решение конкретной девопсовской или микро-сервисной задачи. А не на следование высшим ритуалам ООП. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 12:23 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
mayton Скорее всего - лаба по рефлексии. В обычной ООП разработке - если тебе нужен доступ к полям - то ты либо открываешь доступ модификаторами pub/protect/priv либо делаешь по дизайну соотв. геттеры. Да, это задачка по рефлексии) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 12:29 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Сергей Лалов mayton Скорее всего - лаба по рефлексии. В обычной ООП разработке - если тебе нужен доступ к полям - то ты либо открываешь доступ модификаторами pub/protect/priv либо делаешь по дизайну соотв. геттеры. Да, это задачка по рефлексии) Редко её юзают. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 12:33 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Ее в основном юзают фреймворки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 12:36 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Попалась мне где-то такая история ... Сдаёт новобранец упражнение по стрельбе короткими очередями. Новобранец, то ли разрядник, то ли мастер спорта по стрельбе, ставит автомат на одиночный огонь и классно поражает все мишени. Сержант кроет его матом: "Короткими очередями, ...", а новобранец, весь такой невозмутимый: "Зачем? Я и одиночными прекрасно попадаю". Самое смешное, что запостил это сообщение тот самый новобранец, который даже отслужив в армии и, вроде как, повзрослев - продолжал обижаться на "тупого сержанта". Есть у человека учебная задача. Решение должно продемонстрировать навык, который (не) получил программист, а не всё то, о чём тут "философируется". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 13:28 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
mayton Скорее всего - лаба по рефлексии.... Лечение простуты через ж.... это теперь называется "лаба по рефлексии" ? Т.к. "setAccessible(true)" и "доступ к приватным полям" это проктология. При чем тут ООП совершенно не понятно. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 13:28 |
|
getDeclaredField и setAccessible(true)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton Скорее всего - лаба по рефлексии.... Лечение простуты через ж.... это теперь называется "лаба по рефлексии" ? Т.к. "setAccessible(true)" и "доступ к приватным полям" это проктология. При чем тут ООП совершенно не понятно. IMHO Не знаю, у меня тема топика вообще не касалась ООП, и более того задача уже решена в третьем письме Видимо народу нужна новая трибуна для обсуждения топика" ООП умирает". Ну послушать интересно, не возражаю) PS. Можно ещё подлить масла в огонь, и обсудить новую фишку объявления переменных через var: Код: java 1.
Java уже практически бейсиком стал)) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2021, 13:47 |
|
|
start [/forum/topic.php?fid=59&msg=40049513&tid=2120516]: |
0ms |
get settings: |
26ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
559ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 948ms |
0 / 0 |