|
|
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
кто-нибудь знает как изменить значения private поля ? и возможно ли это? и как это делает hibernate из примеров Хибернета class C{ private Integer id; private void setId(Integer id){..} public Integer getId(){ return id} } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:10 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
почитайте про механизм reflection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:23 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
если это может делать reflection, тогда зачем нужно private? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:28 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
qw123если это может делать reflection, тогда зачем нужно private? security можно настроить так что setAccessible будет недоступен. И тогда поле нельзя будет заломать через рефлексию. Но вообще ограничение-то видимости больше для удобства девелоперов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:31 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
всем откликнувшимся спасибо, вопрос решён ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:34 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
А для private static полей это действует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:56 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
вопрос закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 14:00 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
У меня такой вопрос на счет инкапсуляции. Есть клас pryamougolnik с полями x,y// высота и ширина. И есть другой клас apps где создается обьект предыдущего класа pryamougolnik p= new pryamougolnik(); и там же определяются поля прямоугольника. p.x=a; p.y=b; тогда поля x,y в прямоугольнике могут быть pr4vate для обеспечение инкапсуляции или их надо определить как public для обеспечение доступа в другом класе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:15 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
stut, Для новичков правило однозначное. Все изменяемые поля - приватные. Доступ через свойство - методы getX() и setX(). Для экспертов - могут быть нюансы, но надо всегда знать о последствиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:27 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
Я так понял это задание, что там ишла речь об определение этих полей на прямую без конструкторов (в т.ч. по умолчанию), и гетеров и сетеров? Или так невозможно определить поля. Тогда не понятно если обьявить их приват-запрет доступа от чего он дает, от каких других класов и в каких условиях. Типа someclass.c=p.x? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 14:04 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
Я так понял это задание, что там ишла речь об определение этих полей на прямую без конструкторов (в т.ч. по умолчанию), и гетеров и сетеров? Или так невозможно определить поля. Тогда не понятно если обьявить их приват-запрет доступа от чего он дает, от каких других класов и в каких условиях. Типа someclass.c=p.x? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 14:04 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
Полагаю, русский язык для вас не родной. Понять ваши вопросы не просто. stutЯ так понял это задание Какое задание? stut, что там ишла речь об определение этих полей на прямую без конструкторов (в т.ч. по умолчанию), и гетеров и сетеров? Возможно. Я пока задания не видел. stutИли так невозможно определить поля. Возможно. stut Тогда не понятно если обьявить их приват-запрет доступа от чего он дает Это даёт свойства, которые в отличие от полей являются виртуальными и можно использовать полиморфизм в полный рост. stut , от каких других класов и в каких условиях. Типа someclass.c=p.x? Тут я совсем потерялся. Постарайсте сформулировать иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 14:15 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
Да насчет русского уже написано не один раз. Задание вкратце я выложыл вначале. Хотя оно состояло в том чтобы поменять уже существующий код. Может надо было как раз и методы использовать для установления. Кроме того там эти поля были определены как публик. И надо было обеспечить инкапсуляцию. То есть единый логический вариант изменить на приват модификатор. Но тогда возникает вопрос в чем тогда отличие между полями приват и публик? Если возможно определить таким способом поля обьекта, то это возможно когда поля есть приватными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 16:23 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
stutДа насчет русского уже написано не один раз. Прошу прощения, но я всех не запоминаю. Заполнили бы в профиле поле "Откуда" и вопросов бы не возникало. С анлийским как? stutЗадание вкратце я выложыл вначале. Оно там в перемешку с вашими мыслями, поэтому где задание не очевидно. Да и трактовка вашего задания может радикально отличаться от самого заданеия. stutХотя оно состояло в том чтобы поменять уже существующий код. Может надо было как раз и методы использовать для установления. Кроме того там эти поля были определены как публик. И надо было обеспечить инкапсуляцию. То есть единый логический вариант изменить на приват модификатор. Но тогда возникает вопрос в чем тогда отличие между полями приват и публик? Если возможно определить таким способом поля обьекта, то это возможно когда поля есть приватными? Я ничего не понял. "Возмжно ли это. А возможно ли вон то". Поля - состояние объекта. Публичные поля выставляют состояние объекта кому-попало на пользование. Приватные поля скрывают состояние объекта внутри самого объекта что и есть инкапсуляция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 16:29 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Blazkowicz, да такую теорию я уже сто раз слышал. А вот практика особенно надобность все этого вызывало с меня вопросы. Что значит кому попало. Можно подумать что там вот прям руками берут если есть паблик. Ну определили мы эти поля как приват к чему склоняет задание ибо изначально они паблик. А во втором кларе они определяюся или изменятся. Где там инкапсуляция. Или она определяется в том что эти поля определяются после создание обькта то есть как бы внутри первого класа обьект которого помещен в ином класе. Знаю что поля можно в первую очередь через конструктор определять который всегда паблик. Или здесь дело в том что правая часть то есть то что присваеватся надо определять модиф. доступа, а левая часть вне действия этого так как ей это присваевается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 17:26 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Blazkowicz, да такую теорию я уже сто раз слышал. А вот практика особенно надобность все этого вызывало с меня вопросы. Что значит кому попало. Можно подумать что там вот прям руками берут если есть паблик. Ну определили мы эти поля как приват к чему склоняет задание ибо изначально они паблик. А во втором кларе они определяюся или изменятся. Где там инкапсуляция. Или она определяется в том что эти поля определяются после создание обькта то есть как бы внутри первого класа обьект которого помещен в ином класе. Знаю что поля можно в первую очередь через конструктор определять который всегда паблик. Или здесь дело в том что правая часть то есть то что присваеватся надо определять модиф. доступа, а левая часть вне действия этого так как ей это присваевается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 17:26 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
stutBlazkowicz, Blazkowicz, да такую теорию я уже сто раз слышал. И всё никак не можете в неё поверить? stutА вот практика особенно надобность все этого вызывало с меня вопросы. Что значит кому попало. public поле обозначает, что любой другой класс может читать\писать значение данного класса и стать зависимым от внутренного состояния класса. В примитивных случаях для классов типа Rectangle это не страшно. Но новички не могут правильно отличить в каких случаях можно использовать публчиные поля. Поэтому им лучше всего использовать приватные поля и свойства. stutМожно подумать что там вот прям руками берут если есть паблик. Безопасный код, тяжело сломать. Нарушение инкапсуляции делает код более уязвимым, потому что увеличивает зависимость между классами. Предстваляете, вы написали чисто для себя класс с публичными полями, а ваш коллега начал их использовать и не догадался, что этого делать не стоило. stutНу определили мы эти поля как приват к чему склоняет задание ибо изначально они паблик. Задания мы пока что не видели. stutА во втором кларе они определяюся или изменятся. Где там инкапсуляция. "Второй клар" общается с первым через методы, которые первый предоставляет. Тем самым скрывая от "второго клара" своё внутреннее состояние и структуру. Понять на примитивных примерах это решительно не возможно. Вероятно в этом ваше затруднение. stut Или она определяется в том что эти поля определяются после создание обькта то есть как бы внутри первого класа обьект которого помещен в ином класе. Процесс создания объекта не так важен. stutЗнаю что поля можно в первую очередь через конструктор определять который всегда паблик. Конструктор не всегда паблик. Не знаю что такое "определять поля". Поля можно объявлять. Можно задавать им значение. Можно это значени читать. stutИли здесь дело в том что правая часть то есть то что присваеватся надо определять модиф. доступа, а левая часть вне действия этого так как ей это присваевается. Тяжело ориентироваться в коде, который только у вас в голове. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 17:43 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
У меня еще есть иной хотя похожый вопрос. В ином задание мне надо было определить свойства полей. Я вообще такое в яве в первый раз увидел. Потом посмотрел в англоязычный интернет так там идет речь что имеется ввиду setter- и getter-методы. Действительно ли это так и как в этих проперти использовать исключительные ситуации. Например возраст. Если выходит за пределы то throw exception, a где определять эти исключительные ситуации и в каком виде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 00:26 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
stutУ меня еще есть иной хотя похожый вопрос. В ином задание мне надо было определить свойства полей. Я вообще такое в яве в первый раз увидел. Потом посмотрел в англоязычный интернет так там идет речь что имеется ввиду setter- и getter-методы. Действительно ли это так ... Да. Всё верно. Я вам про свойства и акцессоры с самого начала пишу. А вы игнорируете. stutи как в этих проперти использовать исключительные ситуации. Например возраст. Если выходит за пределы то throw exception, a где определять эти исключительные ситуации и в каком виде? Есть много разных способов. Тут однозначного ответа нет. 1) Прямо в setter-е Код: java 1. 2. 3. 4. 5. 2) С использованием фреймверков (Oval ( http://oval.sourceforge.net/) или Bean Validation ( http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html)) Код: java 1. 2. 3. 4. 3) С использование отдельного слоя валидации, этот вариант, возможно будет хорошим в UI, где пользователю можно вводить что угодно. Но с другой стороны он и не самый безопасный, так как позволяет иметь не валидное состояние. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2014, 11:17 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
Ну все таки надо вам сразу было написать что присвоение напряму полей обьекта одного класа в рамках второго класа при приватных полях вызовет ошибку компиляции. Хотя это надо было мне проверить на компиляторе, что я и зделал. Хотя создание обьекта надо делать в методе мейн второго класа ибо без него присвоение и даже систем.аут.принт-вызывает ошибку <identifier> expected. То есть выходит что без метода мейн присвоение и не только не произойдет? Только не понимаю как в класе прямоугольник обеспечить инкапсуляцию если поля есть паблик, приват в таком случае вызовет ошибку? Чтоли протектед, но тогда это не будет вполне инкапсуляция да и наследование придется применять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2014, 07:28 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
stutНу все таки надо вам сразу было написать что присвоение напряму полей обьекта одного класа в рамках второго класа при приватных полях вызовет ошибку компиляции. То есть это теперь моя вина в том что вы отказываетесь читать документацию? Увидели незнакомое слово - ищите его описание в документации. stutХотя это надо было мне проверить на компиляторе, что я и зделал. javac.exe - это компилятор. А то что вы "зделали", скорее всего, просто код на Java. stutХотя создание обьекта надо делать в методе мейн второго класа ибо без него присвоение и даже систем.аут.принт-вызывает ошибку <identifier> expected. То есть выходит что без метода мейн присвоение и не только не произойдет? Вы свой код видите, а я ваш - нет. Удачи в объяснениях на пальцах. stut Только не понимаю как в класе прямоугольник обеспечить инкапсуляцию если поля есть паблик, приват в таком случае вызовет ошибку? В других классах нужно использовать не поля прямоугольника, а только его методы. stutЧтоли протектед, но тогда это не будет вполне инкапсуляция да и наследование придется применять. facepalm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2014, 11:14 |
|
||
|
изменить значения private поля
|
|||
|---|---|---|---|
|
#18+
То есть идентификатор эйспектед значит что надо обязательно включить метод (мейн, например).// еще вопрос чтобы не создавать новую тему-где найти примеры кода который создают джуниоры и интермедиат девелоперы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 02:26 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=184&tid=2127541]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 377ms |

| 0 / 0 |
