LINUX.ORG.RU

[Java] Пару идеологических вопросов.


0

0

Вот постигая философию Java у меня возникло пару вопросов, на которые вопросы на которые не могу себе однозначно ответить. Вот и прошу бородачей помочь.

1) Нужен ли объекту публичный метод load? Мне кажется что вполне достаточно конструктора.

2) Представим что есть класс User:
class User {
private String name;

public String getName() {
// ...
}

public void setName(String name) {
// ...
}
}

И меня мучают сомнения нужно ли возвращать/присваивать ссылку или копию объекта, на который ссылается свойство name.

★★★★★

Re: [Java] Пару идеологических вопросов.

>И меня мучают сомнения нужно ли возвращать/присваивать ссылку или копию объекта, на который ссылается свойство name.

String - immutable объект. Это значит, что клонировать его бессмысленно. А вот изменяемые объекты типа java.util.Calendar неплохо бы клонировать. На эту тему много писал Joshua Bloch в Effective Java.

>Нужен ли объекту публичный метод load? Мне кажется что вполне достаточно конструктора.

Конструктор (ИМХО) нужен для атомарных сущностей таких как гипотетический класс PhoneNumber. Для составных классов с кучей полей надо оставить конструктор без параметров.

Absurd ★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от Absurd

Re: [Java] Пару идеологических вопросов.

> На эту тему много писал Joshua Bloch в Effective Java.
Спасибо за наводку.

> Для составных классов с кучей полей надо оставить конструктор без параметров.

Ну все равно, если я создаю практически все объекты на основе данных из БД, по ID то код, в данном случае, будет примерно таким:
User user = new User();
user.load(someId);
А без load ведь красивше:
User user = new User(someId);

urxvt ★★★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от urxvt

Re: [Java] Пару идеологических вопросов.

>Ну все равно, если я создаю практически все объекты на основе данных из БД, по ID то код, в данном случае, будет примерно таким:

>А без load ведь красивше:

Это сейчас в основном через рантаймовые аннотации и рефлексию делается. Недефолные конструкторы для составных объектов это первый аттрибут жабского нуба.

Absurd ★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от Absurd

Re: [Java] Пару идеологических вопросов.

Ну я и есть нуб, кроме хелловорлда ничего не написал пока.

> Это сейчас в основном через рантаймовые аннотации и рефлексию делается. А вот тут пока ни слова не понял.

urxvt ★★★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от urxvt

Re: [Java] Пару идеологических вопросов.

>Ну все равно, если я создаю практически все объекты на основе данных из БД, по ID то код, в данном случае, будет примерно таким...

Код при создании юзверя из базы будет немного другим:

User u = sess.load(User.class, someId);

Nagwal ★★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от urxvt

Re: [Java] Пару идеологических вопросов.

> Это сейчас в основном через рантаймовые аннотации и рефлексию делается. А вот тут пока ни слова не понял.

У обьекта, который должен грузиться из базы есть некая метаинформация, говорящая о том что и откуда грузить. Информация может содержаться в аннотациях самого класса или конфигах. Используя эту инфу разного рода фреймворки сами инстанциируют обьект при загрузке, распихивают куда надо данные и отдают тебе в готовом виде.

Nagwal ★★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от urxvt

Re: [Java] Пару идеологических вопросов.

>> Это сейчас в основном через рантаймовые аннотации и рефлексию делается.

> А вот тут пока ни слова не понял.

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

З.Ы. но вообще конечно это полезно.

www_linux_org_ru ★★★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от www_linux_org_ru

Re: [Java] Пару идеологических вопросов.

> Я же писал, что не факт, что ты захочешь учить явовские фреймворки... вот даже рефлексия и аннотации для тебя новость.
Просто я пока с языком только знакомлюсь, дойду и туда (надеюсь).

Спасибо всем за помощь.

urxvt ★★★★★ ()
Ответ на: Re: [Java] Пару идеологических вопросов. от urxvt

Re: [Java] Пару идеологических вопросов.

>А вот тут пока ни слова не понял.

если не хочется забивать голову конфигами итп, а просто писать, настоятельно рекомендую посмотреть grails, а именно есть ORM под названием GORM.

thevery ★★★★ ()

Re: [Java] Пару идеологических вопросов.

java.lang.String.toString()

bvvv ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.