powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / изменить значения private поля
23 сообщений из 23, страница 1 из 1
изменить значения private поля
    #35209513
I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
I
Гость
кто-нибудь знает как изменить значения private поля ? и возможно ли это?

и как это делает hibernate

из примеров Хибернета
class C{
private Integer id;

private void setId(Integer id){..}
public Integer getId(){ return id}

}
...
Рейтинг: 0 / 0
изменить значения private поля
    #35209561
caporegim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитайте про механизм reflection
...
Рейтинг: 0 / 0
изменить значения private поля
    #35209572
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тынцы
1
2
...
Рейтинг: 0 / 0
изменить значения private поля
    #35209574
qw123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если это может делать reflection, тогда зачем нужно private?
...
Рейтинг: 0 / 0
изменить значения private поля
    #35209583
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qw123если это может делать reflection, тогда зачем нужно private?
security можно настроить так что setAccessible будет недоступен. И тогда поле нельзя будет заломать через рефлексию. Но вообще ограничение-то видимости больше для удобства девелоперов.
...
Рейтинг: 0 / 0
изменить значения private поля
    #35209597
I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
I
Гость
всем откликнувшимся спасибо, вопрос решён
...
Рейтинг: 0 / 0
изменить значения private поля
    #35209685
qw123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А для private static полей это действует?
...
Рейтинг: 0 / 0
изменить значения private поля
    #35209697
qw123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос закрыт.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
изменить значения private поля
    #38576768
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня такой вопрос на счет инкапсуляции. Есть клас pryamougolnik с полями x,y// высота и ширина. И есть другой клас apps где создается обьект предыдущего класа pryamougolnik p= new pryamougolnik(); и там же определяются поля прямоугольника. p.x=a; p.y=b; тогда поля x,y в прямоугольнике могут быть pr4vate для обеспечение инкапсуляции или их надо определить как public для обеспечение доступа в другом класе?
...
Рейтинг: 0 / 0
изменить значения private поля
    #38576786
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stut,
Для новичков правило однозначное. Все изменяемые поля - приватные. Доступ через свойство - методы getX() и setX().
Для экспертов - могут быть нюансы, но надо всегда знать о последствиях.
...
Рейтинг: 0 / 0
изменить значения private поля
    #38576840
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял это задание, что там ишла речь об определение этих полей на прямую без конструкторов (в т.ч. по умолчанию), и гетеров и сетеров? Или так невозможно определить поля. Тогда не понятно если обьявить их приват-запрет доступа от чего он дает, от каких других класов и в каких условиях. Типа someclass.c=p.x?
...
Рейтинг: 0 / 0
изменить значения private поля
    #38576841
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял это задание, что там ишла речь об определение этих полей на прямую без конструкторов (в т.ч. по умолчанию), и гетеров и сетеров? Или так невозможно определить поля. Тогда не понятно если обьявить их приват-запрет доступа от чего он дает, от каких других класов и в каких условиях. Типа someclass.c=p.x?
...
Рейтинг: 0 / 0
изменить значения private поля
    #38576862
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полагаю, русский язык для вас не родной. Понять ваши вопросы не просто.
stutЯ так понял это задание
Какое задание?

stut, что там ишла речь об определение этих полей на прямую без конструкторов (в т.ч. по умолчанию), и гетеров и сетеров?
Возможно. Я пока задания не видел.

stutИли так невозможно определить поля.
Возможно.

stut Тогда не понятно если обьявить их приват-запрет доступа от чего он дает
Это даёт свойства, которые в отличие от полей являются виртуальными и можно использовать полиморфизм в полный рост.

stut , от каких других класов и в каких условиях. Типа someclass.c=p.x?
Тут я совсем потерялся. Постарайсте сформулировать иначе.
...
Рейтинг: 0 / 0
изменить значения private поля
    #38577025
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да насчет русского уже написано не один раз. Задание вкратце я выложыл вначале. Хотя оно состояло в том чтобы поменять уже существующий код. Может надо было как раз и методы использовать для установления. Кроме того там эти поля были определены как публик. И надо было обеспечить инкапсуляцию. То есть единый логический вариант изменить на приват модификатор. Но тогда возникает вопрос в чем тогда отличие между полями приват и публик? Если возможно определить таким способом поля обьекта, то это возможно когда поля есть приватными?
...
Рейтинг: 0 / 0
изменить значения private поля
    #38577035
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutДа насчет русского уже написано не один раз.
Прошу прощения, но я всех не запоминаю. Заполнили бы в профиле поле "Откуда" и вопросов бы не возникало.
С анлийским как?

stutЗадание вкратце я выложыл вначале.
Оно там в перемешку с вашими мыслями, поэтому где задание не очевидно. Да и трактовка вашего задания может радикально отличаться от самого заданеия.

stutХотя оно состояло в том чтобы поменять уже существующий код. Может надо было как раз и методы использовать для установления. Кроме того там эти поля были определены как публик. И надо было обеспечить инкапсуляцию. То есть единый логический вариант изменить на приват модификатор. Но тогда возникает вопрос в чем тогда отличие между полями приват и публик? Если возможно определить таким способом поля обьекта, то это возможно когда поля есть приватными?
Я ничего не понял. "Возмжно ли это. А возможно ли вон то".
Поля - состояние объекта.
Публичные поля выставляют состояние объекта кому-попало на пользование.
Приватные поля скрывают состояние объекта внутри самого объекта что и есть инкапсуляция.
...
Рейтинг: 0 / 0
изменить значения private поля
    #38577088
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, Blazkowicz, да такую теорию я уже сто раз слышал. А вот практика особенно надобность все этого вызывало с меня вопросы. Что значит кому попало. Можно подумать что там вот прям руками берут если есть паблик. Ну определили мы эти поля как приват к чему склоняет задание ибо изначально они паблик. А во втором кларе они определяюся или изменятся. Где там инкапсуляция. Или она определяется в том что эти поля определяются после создание обькта то есть как бы внутри первого класа обьект которого помещен в ином класе. Знаю что поля можно в первую очередь через конструктор определять который всегда паблик. Или здесь дело в том что правая часть то есть то что присваеватся надо определять модиф. доступа, а левая часть вне действия этого так как ей это присваевается.
...
Рейтинг: 0 / 0
изменить значения private поля
    #38577089
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, Blazkowicz, да такую теорию я уже сто раз слышал. А вот практика особенно надобность все этого вызывало с меня вопросы. Что значит кому попало. Можно подумать что там вот прям руками берут если есть паблик. Ну определили мы эти поля как приват к чему склоняет задание ибо изначально они паблик. А во втором кларе они определяюся или изменятся. Где там инкапсуляция. Или она определяется в том что эти поля определяются после создание обькта то есть как бы внутри первого класа обьект которого помещен в ином класе. Знаю что поля можно в первую очередь через конструктор определять который всегда паблик. Или здесь дело в том что правая часть то есть то что присваеватся надо определять модиф. доступа, а левая часть вне действия этого так как ей это присваевается.
...
Рейтинг: 0 / 0
изменить значения private поля
    #38577105
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutBlazkowicz, Blazkowicz, да такую теорию я уже сто раз слышал.
И всё никак не можете в неё поверить?

stutА вот практика особенно надобность все этого вызывало с меня вопросы. Что значит кому попало.
public поле обозначает, что любой другой класс может читать\писать значение данного класса и стать зависимым от внутренного состояния класса. В примитивных случаях для классов типа Rectangle это не страшно. Но новички не могут правильно отличить в каких случаях можно использовать публчиные поля. Поэтому им лучше всего использовать приватные поля и свойства.

stutМожно подумать что там вот прям руками берут если есть паблик.

Безопасный код, тяжело сломать. Нарушение инкапсуляции делает код более уязвимым, потому что увеличивает зависимость между классами. Предстваляете, вы написали чисто для себя класс с публичными полями, а ваш коллега начал их использовать и не догадался, что этого делать не стоило.

stutНу определили мы эти поля как приват к чему склоняет задание ибо изначально они паблик.

Задания мы пока что не видели.

stutА во втором кларе они определяюся или изменятся. Где там инкапсуляция.

"Второй клар" общается с первым через методы, которые первый предоставляет. Тем самым скрывая от "второго клара" своё внутреннее состояние и структуру. Понять на примитивных примерах это решительно не возможно. Вероятно в этом ваше затруднение.

stut Или она определяется в том что эти поля определяются после создание обькта то есть как бы внутри первого класа обьект которого помещен в ином класе.
Процесс создания объекта не так важен.

stutЗнаю что поля можно в первую очередь через конструктор определять который всегда паблик.

Конструктор не всегда паблик.
Не знаю что такое "определять поля".
Поля можно объявлять. Можно задавать им значение. Можно это значени читать.

stutИли здесь дело в том что правая часть то есть то что присваеватся надо определять модиф. доступа, а левая часть вне действия этого так как ей это присваевается.

Тяжело ориентироваться в коде, который только у вас в голове.
...
Рейтинг: 0 / 0
изменить значения private поля
    #38577344
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня еще есть иной хотя похожый вопрос. В ином задание мне надо было определить свойства полей. Я вообще такое в яве в первый раз увидел. Потом посмотрел в англоязычный интернет так там идет речь что имеется ввиду setter- и getter-методы. Действительно ли это так и как в этих проперти использовать исключительные ситуации. Например возраст. Если выходит за пределы то throw exception, a где определять эти исключительные ситуации и в каком виде?
...
Рейтинг: 0 / 0
изменить значения private поля
    #38577512
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutУ меня еще есть иной хотя похожый вопрос. В ином задание мне надо было определить свойства полей. Я вообще такое в яве в первый раз увидел. Потом посмотрел в англоязычный интернет так там идет речь что имеется ввиду setter- и getter-методы. Действительно ли это так ...
Да. Всё верно. Я вам про свойства и акцессоры с самого начала пишу. А вы игнорируете.

stutи как в этих проперти использовать исключительные ситуации. Например возраст. Если выходит за пределы то throw exception, a где определять эти исключительные ситуации и в каком виде?
Есть много разных способов. Тут однозначного ответа нет.
1) Прямо в setter-е

Код: java
1.
2.
3.
4.
5.
public void setAge(int age){
   if(age < 0) throw new IllegalStateException("Negative age");

   this.age = age;
}



2) С использованием фреймверков
(Oval ( http://oval.sourceforge.net/) или Bean Validation ( http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html))


Код: java
1.
2.
3.
4.
@Min(0)
public void setAge(int age){
     this.age = age;
}



3) С использование отдельного слоя валидации, этот вариант, возможно будет хорошим в UI, где пользователю можно вводить что угодно. Но с другой стороны он и не самый безопасный, так как позволяет иметь не валидное состояние.

Код: java
1.
2.
person.setAge(newAge);
validator.validate(person); //Выкидывает исключение
...
Рейтинг: 0 / 0
изменить значения private поля
    #38579678
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну все таки надо вам сразу было написать что присвоение напряму полей обьекта одного класа в рамках второго класа при приватных полях вызовет ошибку компиляции. Хотя это надо было мне проверить на компиляторе, что я и зделал. Хотя создание обьекта надо делать в методе мейн второго класа ибо без него присвоение и даже систем.аут.принт-вызывает ошибку <identifier> expected. То есть выходит что без метода мейн присвоение и не только не произойдет? Только не понимаю как в класе прямоугольник обеспечить инкапсуляцию если поля есть паблик, приват в таком случае вызовет ошибку? Чтоли протектед, но тогда это не будет вполне инкапсуляция да и наследование придется применять.
...
Рейтинг: 0 / 0
изменить значения private поля
    #38579863
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutНу все таки надо вам сразу было написать что присвоение напряму полей обьекта одного класа в рамках второго класа при приватных полях вызовет ошибку компиляции.
То есть это теперь моя вина в том что вы отказываетесь читать документацию? Увидели незнакомое слово - ищите его описание в документации.

stutХотя это надо было мне проверить на компиляторе, что я и зделал.

javac.exe - это компилятор.
А то что вы "зделали", скорее всего, просто код на Java.

stutХотя создание обьекта надо делать в методе мейн второго класа ибо без него присвоение и даже систем.аут.принт-вызывает ошибку <identifier> expected. То есть выходит что без метода мейн присвоение и не только не произойдет?

Вы свой код видите, а я ваш - нет. Удачи в объяснениях на пальцах.

stut Только не понимаю как в класе прямоугольник обеспечить инкапсуляцию если поля есть паблик, приват в таком случае вызовет ошибку?
В других классах нужно использовать не поля прямоугольника, а только его методы.

stutЧтоли протектед, но тогда это не будет вполне инкапсуляция да и наследование придется применять.
facepalm
...
Рейтинг: 0 / 0
изменить значения private поля
    #38581692
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть идентификатор эйспектед значит что надо обязательно включить метод (мейн, например).// еще вопрос чтобы не создавать новую тему-где найти примеры кода который создают джуниоры и интермедиат девелоперы?
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / изменить значения private поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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