Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Инициализация объекта при создание(вопрос от новичка) / 25 сообщений из 35, страница 1 из 2
22.01.2021, 12:08
    #40037903
Mixon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
public class MyTestClass {
    public int id;
    public String name;

    public MyTestClass() {
        id = 0;
        name = "";
    }

    public MyTestClass(MyTestClass from) {
        id = from.id;
        name = from.name;
    }
}
// где то в main
{
MyTestClass t=new MyTestClass();
t.id=123;
t.name="123";

//можно ли как в c#?
MyTestClass t=new MyTestClass()
{
id=123,
name="123",
};
}



Заранее спасибо за информацию!
...
Рейтинг: 0 / 0
22.01.2021, 12:17
    #40037911
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Mixon,
Нет. В конструкторе же меньше писать инициализацию. Проще..?
...
Рейтинг: 0 / 0
22.01.2021, 12:19
    #40037913
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Через конструктор с параметрами.
public MyTestClass(int id, String name) {
this.id = id;
this.name = name;
}
...
Рейтинг: 0 / 0
22.01.2021, 12:46
    #40037939
Mixon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Nixic
Через конструктор с параметрами.
public MyTestClass(int id, String name) {
this.id = id;
this.name = name;
}


Вариант предложенный Вами, на мой взгляд "не очень", обясню почему, выносить в конструктов все поля это еще не гемор, гемор это создание кучи вариантов конструктора, к примеру, инициализания всех полей класса или только поля "id" или поля "name", вариант из C#, позволяет избежать лишней писанины.

Спасибо! яве есть куда еще развиваться.
...
Рейтинг: 0 / 0
22.01.2021, 13:13
    #40037966
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Mixon,
Это тебе есть куда развиваться.
В java пишут Устойчивый производственный код. Дуракоустойчивый..
Где не надо 1500 вариантов инициализации класс..
Если класс для печати, то у него 3 или 4 варианта создания. И жестких конструкторов или фабрика.
Вам в js сайтики писать.
...
Рейтинг: 0 / 0
22.01.2021, 13:44
    #40037982
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Неудобно что нет такой штуки
public int id = 123;
Имхо
...
Рейтинг: 0 / 0
22.01.2021, 13:50
    #40037991
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
PetroNotC Sharp
Mixon,
Нет. В конструкторе же меньше писать инициализацию. Проще..?


Как это нет, когда есть анонимные классы с синтаксисом один в один?
...
Рейтинг: 0 / 0
22.01.2021, 14:10
    #40038009
Mixon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Друзья, поймите мою точку зрения, я чайник в JAVA, есть устоявшийся у меня(лично) процесс инициализации объектов, не спорю, что для этого есть базовый конструктор, и как выше описано, вариант C#, там тоже можно используя имя переменной задать паблик свойство объекта, а можно как принято через конструктор, но есть интнресный вариант который позволяет после вызова конструктора в блоке {} задать публичные свойства объекта.

Всем спасибо.
...
Рейтинг: 0 / 0
22.01.2021, 14:30
    #40038027
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Alexander A. Sak
PetroNotC Sharp
Mixon,
Нет. В конструкторе же меньше писать инициализацию. Проще..?


Как это нет, когда есть анонимные классы с синтаксисом один в один?
пример дай. Мож я тебя не понял
...
Рейтинг: 0 / 0
22.01.2021, 14:33
    #40038033
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Mixon,
Ну ты жеж на яву наехал на прощание. Поэтому я на тебя).
Много народу С++ ругает за кучу вариантов инициал.
...
Рейтинг: 0 / 0
22.01.2021, 14:58
    #40038053
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
PetroNotC Sharp
Alexander A. Sak
пропущено...


Как это нет, когда есть анонимные классы с синтаксисом один в один?
пример дай. Мож я тебя не понял


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public class AnonClass {

   int f1;
   int f2;

   @Override
   public String toString() {
      return "AnonClass [f1=" + f1 + ", f2=" + f2 + "]";
   }

   public static void main(String[] args) {
      AnonClass ac1 = new AnonClass() {
         {
            f1=1;
            f2=2;
         }
      };

      AnonClass ac2 = new AnonClass() {
         {
            f1=10;
            f2=20;
         }
      };

      System.out.println(ac1);
      System.out.println(ac2);
   }

}



Вывод:
Код: plaintext
1.
2.
AnonClass [f1=1, f2=2]
AnonClass [f1=10, f2=20]

Но таки надо понимать что происходит под капотом.
...
Рейтинг: 0 / 0
23.01.2021, 11:33
    #40038234
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
обычно подобные DTO классы делают с приватными полями, и для каждого поля пишут getter и setter.
Далее в начале какого-то класса или внутри метода:
MyTestClass t=new MyTestClass();
и
через setter:
t.setId(123);
...

Чтобы руками не писать геттеры и сеттеры в любой IDE есть генераторы для них (и не только для них)

Кроме того, чтобы совсем ничего не писать можно над классом сделать аннотация от lombok
@Data
public class MyTestClass {
....

У lombok не только лишь эта одна аннотация, но и много других - для конструкторов, для отдельных сеттеров и много чего еще, чем я лично почти не пользуюсь.
...
Рейтинг: 0 / 0
23.01.2021, 11:36
    #40038237
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
а напрямую к полям класса обращаться не принято, принято их именно приватными делать.
хотя никто не запрещает сделать паблик или любой другой или без(т.е. дефолтный пекейдж)
сорри, за то, что на русском написал, влом переключать язык)))
...
Рейтинг: 0 / 0
23.01.2021, 12:27
    #40038243
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Nixic,
Ты прям напугал сложностями в java. Он разве про DTO говорил?
Оно вообще отмирает и спринг буте его нету. Слишком много нельзя и правил для новичков из 40 строк текста.
...
Рейтинг: 0 / 0
23.01.2021, 12:42
    #40038245
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Zzz79,
Тема про программистов без аннотаций. Киш из темы!
...
Рейтинг: 0 / 0
23.01.2021, 18:30
    #40038312
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Zzz79,
Код без аннотаций ввергает тебя в ступор)))
автора пишут как то так
@Getter
@Setter
@Accessors(fluent = true)
@NoArgsConstructor
@AllArgrsConstructor
Ха ха)))
...
Рейтинг: 0 / 0
23.01.2021, 18:48
    #40038316
hck2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Mixon

Вариант предложенный Вами, на мой взгляд "не очень", обясню почему, выносить в конструктов все поля это еще не гемор, гемор это создание кучи вариантов конструктора, к примеру, инициализания всех полей класса или только поля "id" или поля "name", вариант из C#, позволяет избежать лишней писанины.



гугли lombok и @Builder аннотацию, любая комбинация будет выглядеть как
Код: java
1.
MyClass.builder().field1(var1).field2(var2).build();
...
Рейтинг: 0 / 0
23.01.2021, 19:28
    #40038323
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
hck2,
Круто. Что только не придумают.
Но в плюсах покруче
Код: plaintext
1.
DateClass today { 12, 11, 2018 };
...
Рейтинг: 0 / 0
23.01.2021, 19:42
    #40038326
hck2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
PetroNotC Sharp
hck2,
Круто. Что только не придумают.
Но в плюсах покруче
Код: plaintext
1.
DateClass today { 12, 11, 2018 };


а вот был бы там Builder, не выкинули бы плюсы на свалку истории.
...
Рейтинг: 0 / 0
23.01.2021, 20:26
    #40038330
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
hck2,
Эх, молодёжь! Всё бы вам своих родителей выкидывать на свалку истории. Это проходит...к взрослению до синьора))))
...
Рейтинг: 0 / 0
27.01.2021, 10:58
    #40039255
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Mixon,

Можно как в Kotlin <:o)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
data class MyTestClass(
    var id: Int? = null,
    var name: String? = null
)

fun main() {
    var t = MyTestClass(123, "123")
    var t1 = MyTestClass().apply{
        id = 123
        name = "123"
    }
}
...
Рейтинг: 0 / 0
27.01.2021, 11:21
    #40039263
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Код: java
1.
public record MyTestClass(int id, String name) {}



Код: java
1.
MyTestClass myTestClass = new MyTestClass(123, "123");
...
Рейтинг: 0 / 0
27.01.2021, 11:30
    #40039266
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
mayton,

Record не класс.)
...
Рейтинг: 0 / 0
27.01.2021, 11:33
    #40039268
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
Это неважно. Главное - чтобы show must go on и клиент доволен.
...
Рейтинг: 0 / 0
27.01.2021, 13:57
    #40039342
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация объекта при создание(вопрос от новичка)
PetroNotC Sharp
Record не класс.


Почему?
Читаю блоги по record, вроде как раз таки обычный класс (только все final).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Инициализация объекта при создание(вопрос от новичка) / 25 сообщений из 35, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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