
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.09.2007, 14:07:37
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Народ такой вопрос по джаве. Долго копал может кто подскажет. есть файл test.java: class parent { public String var="parent"; public void printvar() { System.out.println(var); } } class child extends parent { public String var="child"; } class test { public static void main(String[] args) { child c = new child(); c.printvar(); } } Печатает "parent". Как сделать чтобы наследовалось значение поля ? Заранее спасибо ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:10:13
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
добавить getVar() {return var;} и дергать его Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:11:38
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Спасибо .. А если таких полей очень много ? Для каждого getfield добавлять ? Может есть более простое решение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:13:02
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
а поле наследуется, а то что ты подразумеваешь - никак! делай типа в обоих классах Код: plaintext Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:15:37
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
am_sasaа поле наследуется, а то что ты подразумеваешь - никак! делай типа в обоих классах Код: plaintext Код: plaintext 1. 2. Так и сделал - заработало. Может просто кто знает через Reflection можно сделать быстро для болшого количества таких варов в классе ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:21:07
|
|||
|---|---|---|---|
Наследование |
|||
|
#18+
_fromoracleМожет просто кто знает через Reflection можно сделать быстро для болшого количества таких варов в классе ? Что пустом начинаешь разводить ненужную сложность. Для того примера что ты привел, зачем там вообще наследование? Может можно все проще сделать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:29:45
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
vas0 _fromoracleМожет просто кто знает через Reflection можно сделать быстро для болшого количества таких варов в классе ? Что пустом начинаешь разводить ненужную сложность. Для того примера что ты привел, зачем там вообще наследование? Может можно все проще сделать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Типа самый умный ? Я знаю что для моего примера можно без наследования. Тока мой пример сам по себе мне не нужен ... Вопрос был именно в механизме передачи констант родителю .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:35:17
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
_fromoracle Типа самый умный ? Я знаю что для моего примера можно без наследования. Тока мой пример сам по себе мне не нужен ... Вопрос был именно в механизме передачи констант родителю .. Если бы вы всё делали по уму — такой проблемы не стояло бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:36:52
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Софтверный проктолог _fromoracle Типа самый умный ? Я знаю что для моего примера можно без наследования. Тока мой пример сам по себе мне не нужен ... Вопрос был именно в механизме передачи констант родителю .. Если бы вы всё делали по уму — такой проблемы не стояло бы. По уму имеется ввиду с использованием getfield() для каждого поля ? Или ещё что то другое ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:47:45
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
_fromoracle По уму имеется ввиду с использованием getfield() для каждого поля ? Или ещё что то другое ? Да. Знакомо выражение Java Bean? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 14:51:54
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Софтверный проктолог _fromoracle По уму имеется ввиду с использованием getfield() для каждого поля ? Или ещё что то другое ? Да. Знакомо выражение Java Bean? Я вот не понимаю зачем флуд разводить ? Да знакомо. Уже попробывал через getfield() - заработало. Тока представь что класс содержит 100 таких варов и таких 50 отнаследованных классов. Все функциональность посути в parent а в каждом из детей она может быть опционально переопределена. Можно тупо для каждого из полей писать в коде getfield(). Вопрос был в иллегантности решения. Типа как PHP есть такая фича как auto_loaders. Типа он автоматически понимает getfield и тупо ручками в код его писать не надо ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:00:08
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
_fromoracle Тока представь что класс содержит 100 таких варов и таких 50 отнаследованных классов. Все функциональность посути в parent а в каждом из детей она может быть опционально переопределена. Можно тупо для каждого из полей писать в коде getfield(). Вопрос был в иллегантности решения. Типа как PHP есть такая фича как auto_loaders. Типа он автоматически понимает getfield и тупо ручками в код его писать не надо ... Тут есть два варианта. Можно своровать IDEA и с помощью его механизмов рефакторинга попыться быстро и элегантно перестроить прямые обращения на getter'ы как в основном классе, так и во всех наследуемых. Или взять бесплатный Eclipse и посмотреть, что он предлагает в плане рефакторинга. Не исключено, что хватит и его возможностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:01:48
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
_fromoracle Типа он автоматически понимает getfield и тупо ручками в код его писать не надо ... Дополнительно уточняю, что для этого есть такая вещь как автоматические средства рефакторинга кода, которые заменяют существующие вызовы. А когда пишешь новый класс — нет никакой разницы, использовать геттер или переменную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:05:55
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Ок ясно. Буду копать. Спасибо за советы ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:21:32
|
|||
|---|---|---|---|
Наследование |
|||
|
#18+
То что есть костыли для кривых решений отнюдь не значит, что надо этими кривыми решениями пользоваться. Сначала надо бы язык выучить, а потом уже претензии предъявлять. JavaBean тебе только знаком, не более того. Зачем это нужно и как это применять ты без понятия. Это раз. Рефлексия нужна только в очень крайних случаях, как правило при создании библиотек типа Wicket и им подобных. Сейчас, насколько я понимаю, ее заменяют аннотациями (хотя может и не прав). Это два. Учи ООП - это три. Любая нормальная IDE умеет сама делать get/set-методы для указанных переменных (Eclipse точно умеет). Это четыре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:41:49
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
LeonidvТо что есть костыли для кривых решений отнюдь не значит, что надо этими кривыми решениями пользоваться. Сначала надо бы язык выучить, а потом уже претензии предъявлять. JavaBean тебе только знаком, не более того. Зачем это нужно и как это применять ты без понятия. Это раз. Рефлексия нужна только в очень крайних случаях, как правило при создании библиотек типа Wicket и им подобных. Сейчас, насколько я понимаю, ее заменяют аннотациями (хотя может и не прав). Это два. Учи ООП - это три. Любая нормальная IDE умеет сама делать get/set-методы для указанных переменных (Eclipse точно умеет). Это четыре. Претензий я ни к кому не предъявляю. "JavaBean тебе только знаком, не более того. Зачем это нужно и как это применять ты без понятия" Ну как вам сказать для моих задач хватает только того что называют сессионными объектами сервлетов. Может где то их и более активно применяют не знаю не сталкивался. Но что такое JavaBean "Рефлексия нужна только в очень крайних случаях" - абсолютно не согласен... "Учи ООП - это три" - Спасибо за совет, как нить сам разберусь ок ? "Любая нормальная IDE умеет сама делать get/set-методы для указанных переменных" - я пишу в обычно текстовом редакторе без IDE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 16:50:31
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
_fromoracle "Рефлексия нужна только в очень крайних случаях" - абсолютно не согласен... Ты используешь в рабочем коде что-то кроме Class.forName? Приведи пример, пожалуйста. Ну, чтобы это было очень необходимо? _fromoracle "Любая нормальная IDE умеет сама делать get/set-методы для указанных переменных" - я пишу в обычно текстовом редакторе без IDE. Зря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 17:00:09
|
|||
|---|---|---|---|
Наследование |
|||
|
#18+
Софтверный проктолог _fromoracle "Рефлексия нужна только в очень крайних случаях" - абсолютно не согласен... Ты используешь в рабочем коде что-то кроме Class.forName? Приведи пример, пожалуйста. Ну, чтобы это было очень необходимо? _fromoracle "Любая нормальная IDE умеет сама делать get/set-методы для указанных переменных" - я пишу в обычно текстовом редакторе без IDE. Зря. Плюстыща. А вообще именно в этом топике ник пришелся как нельзя в тему :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 17:11:38
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Софтверный проктолог _fromoracle "Рефлексия нужна только в очень крайних случаях" - абсолютно не согласен... Ты используешь в рабочем коде что-то кроме Class.forName? Приведи пример, пожалуйста. Ну, чтобы это было очень необходимо? _fromoracle "Любая нормальная IDE умеет сама делать get/set-методы для указанных переменных" - я пишу в обычно текстовом редакторе без IDE. Зря. "Приведи пример, пожалуйста. Ну, чтобы это было очень необходимо" Пожалуйста: Есть класс внутри проперти инициализируюся функциями. Типа class test { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } Есть объект test t = new test(); Необходимо рефрешнуть properties внутри объекта t, т.е. чтобы заново запустились list1 .. listn. n может принимать значения больше 1000. Я конечно понимаю что можно и ручками наваять че нить типа public void setproperties() { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } и в конструкторе дёргать this.setproperties(); И далее написать t.setproperties(); Но более красиво сделать так: test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); При таком подходе улучшается наглядность кода внутри класса, сразу видно какие переменные чем инициализируются. по поводу IDE на вкус и цвет как известно ... В том же NetBeans например нету автоматической закачки по FTP не сервер написанного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 17:12:30
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Зашедший Софтверный проктолог _fromoracle "Рефлексия нужна только в очень крайних случаях" - абсолютно не согласен... Ты используешь в рабочем коде что-то кроме Class.forName? Приведи пример, пожалуйста. Ну, чтобы это было очень необходимо? _fromoracle "Любая нормальная IDE умеет сама делать get/set-методы для указанных переменных" - я пишу в обычно текстовом редакторе без IDE. Зря. Плюстыща. А вообще именно в этом топике ник пришелся как нельзя в тему :) Чей ник ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 17:25:17
|
|||
|---|---|---|---|
Наследование |
|||
|
#18+
_fromoracleПожалуйста: Есть класс внутри проперти инициализируюся функциями. Типа class test { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } Есть объект test t = new test(); Необходимо рефрешнуть properties внутри объекта t, т.е. чтобы заново запустились list1 .. listn. n может принимать значения больше 1000. Я конечно понимаю что можно и ручками наваять че нить типа public void setproperties() { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } и в конструкторе дёргать this.setproperties(); И далее написать t.setproperties(); Но более красиво сделать так: test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); При таком подходе улучшается наглядность кода внутри класса, сразу видно какие переменные чем инициализируются. Э...А...ёпрст. Дальше забанено самоцензурой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 17:26:02
|
|||
|---|---|---|---|
Наследование |
|||
|
#18+
_fromoracleЧей ник ? Софтверного Проктолога. Очень точно определяет описанное "арихитектурко типо Превед" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 17:27:58
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
_fromoracle Пожалуйста: Есть класс внутри проперти инициализируюся функциями. Типа class test { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } Есть объект test t = new test(); Необходимо рефрешнуть properties внутри объекта t, т.е. чтобы заново запустились list1 .. listn. n может принимать значения больше 1000. Я конечно понимаю что можно и ручками наваять че нить типа public void setproperties() { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } и в конструкторе дёргать this.setproperties(); И далее написать t.setproperties(); Но более красиво сделать так: test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); При таком подходе улучшается наглядность кода внутри класса, сразу видно какие переменные чем инициализируются. Эээээээээээээээ... Это каг таг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.09.2007, 17:29:50
|
|||
|---|---|---|---|
|
|||
Наследование |
|||
|
#18+
Да кстати для тех кто уже уже посмеялся и сказал "test newinstance = (test)t.getClass().newInstance(); t.setproperties(newinstance.getproperties()); Заменить на test newinstance = new test() test.setproperties(newinstance.getproperties()); И никакой рефлексии Усложним вернее приблизим схему к реальной когда class test { Object properties[] = { "list1" , source.list1() , "list2" , source.list2() , ...... "listn" , source.listn(); }; } Помимо test есть отнаследованные childtest1 ... childtestn. И В каждом из child-ов так инициализируется properties. А далее внутри метода из test необходимо превести указанную процедуру для текущего объекта this. Тут уж new test() не прокатит. Остаётся только test newinstance = (test)this.getClass().newInstance(); this.setproperties(newinstance.getproperties()); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2144504]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 327ms |
| total: | 475ms |

| 0 / 0 |
