powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / [q]Конструктор с дефолтными параметрами
18 сообщений из 18, страница 1 из 1
[q]Конструктор с дефолтными параметрами
    #34187571
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, всезнающий Олл!
Подскажите как решить простую задачу. Имеется конструктор с 10 параметрами; естественно, что вызывать его и всегда задавать все 10 параметров не каждому захочется. Необходимо привести это к виду, когда вызов конструктора происходит с 5 или 6 или...10 параметрами, а все недостающие задаются по дефолту(естественно, что констуктор один, а не свой на каждый из вариантов). Вроде все очень просто, но реализовать именно на джаве не получается.
Заранее спасибо!
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187587
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mephДоброго времени суток, всезнающий Олл!
Подскажите как решить простую задачу. Имеется конструктор с 10 параметрами; естественно, что вызывать его и всегда задавать все 10 параметров не каждому захочется. Необходимо привести это к виду, когда вызов конструктора происходит с 5 или 6 или...10 параметрами, а все недостающие задаются по дефолту(естественно, что констуктор один, а не свой на каждый из вариантов). Вроде все очень просто, но реализовать именно на джаве не получается.
Заранее спасибо!
varargs+generics
Много зависит от конкретной ситуации
Если все агрументы 1 типа просто
Код: plaintext
Конструктор(тип ...имя_массива){}
В более сложных случаях помогают параметры типа,
А иногда лучше написать несколько конструкторов
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187590
alexx726
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то на ум ничего кроме
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public  a() {
}

 public  a( int  x) {
 this ();
 this .x =  1 ;
}

 public  a( int  x,  int  y) {
 this (x);
 this .y =  2 ;
}
...

не приходит :)
Можно конечно еще посмотреть в сторону "лошадиных" anyargs (как развитие enum), но боюсь это повлияет на качество кода.
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187591
alexx726
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опаньки...вроде как одновременно запостили (хотя время не совпадает)
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187661
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mephИмеется конструктор с 10 параметрами;
Ужас какой. Я не захочу вызывать конструктор и с 4 параметрами. Максимум параметров это 3. Здесь явно нужен рефакторинг.
1. Либо заменить все 10 параметров объектом.
2. Либо сделать конструктор и параметры устанавливать с помощью методов инкапсуляции (set).
Надо смотреть, что это за объект такой и откуда он берет 10 параметров, как они взаимодействуют.
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187730
alexx726
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понятное дело, что ужас. Но человеку надо :))
Может это какой-то класс-"однодневка" - зачем париться?
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187783
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом говорят "О том, что в России лучшии программисты, знают только в России".
Что такое класс "однодневка"? Это сегодня я его написал, а завтра удалил из исходников напрочь, не слуху не духу не оставив? В чем смысл сего действия (сегодня создать - завтра удалить)?
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187786
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexx726понятное дело, что ужас. Но человеку надо :))
Может это какой-то класс-"однодневка" - зачем париться?
на однодневку можно написать много конструкторов
--------------------------------------------------

только сейчас обратил внимание=)))
Код: plaintext
1.
2.
3.
4.
Конструктор(тип ...имя_массива){}
//и
Конструктор(тип[] имя_массива){}
//эквивалентны. Зачем добавили первый вариант, когда второй даже короче на 1 символ??
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187792
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXER
только сейчас обратил внимание=)))

ой понял: new Конструктор(new int[12345]) работает в обоих случаях, а new Конструктор(2,3); не сработает во втором случае
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187820
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всезнающий Олл!
Спасибо всем за ответы, но хотелось бы сделать элегантнее.
Конечно самое первое, что пришло на ум, это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 public  a() {
}

 public  a( int  x) {
 this ();
 this .x =  1 ;
}
...
Но писать так совесть не возволяет :)
Что до класса, при написании которого у меня возник этот вопрос, то, возможно, он и "10-минутка", но если уж пишу, то хотелось бы делать это грамотно.
В пхп и в си такая задача разрешается довольно легко:
Код: plaintext
1.
2.
 public  a( int  x,  int  y,  int  z,  int  a= 1 ,  int  b= 2 ){
... 
Мне кажется, в джаве должно быть аналогичное простое решение.
Заранее спасибо за ответы!
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187839
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
meph
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 public  a() {
}

 public  a( int  x) {
 this ();
 this .x =  1 ;
}
...

Основная цель в этом=))
Именно, нужно несколько конструкторов. И к каждому можно например написать комментарии(обратите внимание, как это сделано в JDK классах)
и как говорил Leonidv, надо минимизировать количество аргументов конструктора
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34187869
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую вам помотреть в сторону фабрик...
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34188649
Фотография re7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоНСоветую вам помотреть в сторону фабрик...
+1
конструктор с 10 параметрами естэм моветон.
про абстрактную фабрику классов можно почитать в шаблонах проектирования -
обычно тема рассматривается в самом начале.
одна из книг "Шаблоны проектирования в Java"(Patterns in Java) М. Гранд
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34189067
carper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
meph...
Подскажите как решить простую задачу. Имеется конструктор с 10 параметрами; естественно, что вызывать его и всегда задавать все 10 параметров не каждому захочется. ...

"Испорченный" прежде всего PL/SQL тоже вначале смущался отсутствием присвоения параметров по-умолчанию. Особенно когда значимым вариантом оказывался и конструктор вообще без параметров и конструктор, скажем, с 5-ю параметрами и почти любое их, параметров, сочетание.
Вначале так "в лоб" и городил десяток конструкторов. Ага, а в наcледнике опять десяток и т.д. :)

Потом мне это надоело и я наконец сподобился почитать и про фабрики и про то, что прежде чем что-то писать, надо подумать для чего оно вообще нужно. :)
Произошло маленькое "чудо" - мне перестали мешать яй..., ой, то есть отсутствие присвоения параметров по-умолчанию и даже невозможность передачи переменного числа параметров (как в С++), и даже, когда последняя возможность появилась (вроде как не вру?) в JAVA, она мне как-то особо и не нужна - я даже синтаксис поленился осваивать (ну лентяй - знаю, что есть такая штука, понадобится почитаю), ну нет необходимости и все тут! :)

Поэтому приведите лучше свою задачу, которой так нужны 10 параметров, думаю, народ и без меня вам в два счета объяснит, как это решается.
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34189214
neuromancer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
 public  a( int  x,  int  y,  int  z,  int  a= 1 ,  int  b= 2 ){
... 
Мне кажется, в джаве должно быть аналогичное простое решение.
Заранее спасибо за ответы![/quot]

на Java дефолтные параметры:

Код: plaintext
1.
//если приходит null,ставим на "default value", тут тип String.
 this .param = (param !=  null ) ? param : "default value";
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34189232
neuromancer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neuromancer_
Код: plaintext
1.
2.
 public  a( int  x,  int  y,  int  z,  int  a= 1 ,  int  b= 2 ){
... 
Мне кажется, в джаве должно быть аналогичное простое решение.
Заранее спасибо за ответы!

на Java дефолтные параметры:

Код: plaintext
1.
//если приходит null,ставим на "default value", тут тип String.
 this .param = (param !=  null ) ? param : "default value";
[/quot]

а вообще 10 параметров это бред
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34189778
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут уже посоветовали. Я просто приведу цитату по шаблону

автор B u i l d e r
Свойства шаблона
Тип: производящий шаблон
Уровень: компонент
Назначение
Упрощает создание сложных объектов путем определения класса, предназначен-
ного для построения экземпляров другого класса. Шаблон Builder генерирует только
одну сущность. Хотя эта сущность, в свою очередь, может содержать более одного
класса, но один из полученных классов всегда является главным.
Область применения
Шаблон Builder рекомендуется использовать в следующих случаях.
• Класс имеет сложную внутреннюю структуру (особенно это касается тех клас-
сов, которые работают с переменными наборами связанных с ними объектов).
• Атрибуты класса зависят один от другого. Одно из типичных применений шаб-
лона Builder — это его применение в тех случаях, когда имеет место поэтапное
создание сложного объекта. Если атрибуты продукта зависят один от другого,
его невозможно получить другим способом. Например, предположим, что мы
создаем такой объект, как заказ. В этом случае, прежде чем переходить к
"созданию" метода доставки, необходимо убедиться в том, что установлено
значение, определяющее штат США, так как оно влияет на значение налога с
продаж, которое применяется ко всему заказу.
• Класс использует другие объекты системы, получить которые во время созда-
ния затруднительно или неудобно.
Взято из Стивен Стелтинг, Олав Маассен "ПРИМЕНЕНИЕ ШАБЛОНОВ JAVA"
...
Рейтинг: 0 / 0
[q]Конструктор с дефолтными параметрами
    #34190055
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю всех за ответы, наставили на путь истинный :)
Конечно же я не собираюсь использовать класс, в конструкторе которого 10 параметров. Просто возник такой вопрос, и я не смог найти ответ в документации. Шаблоны проектирования это очень хорошо, но мне казалсь такую простую операцию можно было бы и проще реализовать. Ну нет - так нет.
Всем спасибо, вопросов нет.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / [q]Конструктор с дефолтными параметрами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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