powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Ленивая инициализация при валидном значении NULL
18 сообщений из 43, страница 2 из 2
Ленивая инициализация при валидном значении NULL
    #39928398
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
По смыслу все твои объекты - ленивые синглтоны

Да, глядя на приведенные примеры, кажется что они синглтоны. Но на самом деле они живут в пределах вызова метода (в моем примере build()). Моя цель была - элегантно их закэшировать.

mayton
Посмотри еще в сторону Scala. Там есть lazy val. Кажется это то что ты ищешь.

Да! именно то, что ищу! Но на JAVA. Scala не могу по полиси :(
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928409
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K
Объекты этих типов возвращаются сервисами. Их менять нельзя.

Vladmir K
Моя цель была - элегантно их закэшировать.

Это как?
У тебя все равно при отдаче сервиса, есть десиреализованный объект класса в оперативке на твое стороне.
Ты хоть 200 раз вызывай его методы. Никакого падения производительности не будет.
И кешировать не надо.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928410
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фреймворки (Spring) это давно решили. У них бины - ленивые и активизируются при первом обращении.

Вобщем я не очень понимаю с чем борется автор. Возможно с языком программирования или с попыткой
где-то схитрить и писать поменьше кода.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928429
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Вобщем я не очень понимаю с чем борется автор. Возможно с языком программирования или с попыткой
где-то схитрить и писать поменьше кода.

Именно - схитрить :) Просто был удивлен, что вроде бы простая задача не покрыта Java SE
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928433
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K
mayton
Вобщем я не очень понимаю с чем борется автор. Возможно с языком программирования или с попыткой
где-то схитрить и писать поменьше кода.

Именно - схитрить :) Просто был удивлен, что вроде бы простая задача не покрыта Java SE
для хитростей без смысла никто не делает SE)))
Смысл задачи отсутствует.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928456
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Vladmir K
пропущено...

Именно - схитрить :) Просто был удивлен, что вроде бы простая задача не покрыта Java SE
для хитростей без смысла никто не делает SE)))
Смысл задачи отсутствует.

Ага, поэтому lazy val в Скала сделали фана ради!
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928463
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K
Ага, поэтому lazy val в Скала сделали фана ради!
угу. Там для другого.
Если тебе без скалы трудно в java, значит что то лишнее задумал.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928465
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Vladmir K
Ага, поэтому lazy val в Скала сделали фана ради!
угу. Там для другого.
Если тебе без скалы трудно в java, значит что то лишнее задумал.

для чего же для другого?
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928471
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
для чего же для другого?
там более динамичный ЯП.
Ты бы еще с JS горевал, почему нет многих фич в java.
Давай наоборот. Ты как ТС придумай юз кейс со своей ленивостью вычислений.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928534
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K
PetroNotC Sharp
пропущено...
для хитростей без смысла никто не делает SE)))
Смысл задачи отсутствует.

Ага, поэтому lazy val в Скала сделали фана ради!

Ты не в теме. Ленивые вычисления идут не от фана а от работ математика Хаскелла Карри.
Ленивость в ФП - это не просто фича а это база для построения других структур наподобие
бесконечных "рекурсивных" списков которые без ленивости просто невозможно реализовать.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928608
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Vladmir K
пропущено...

Ага, поэтому lazy val в Скала сделали фана ради!

Ты не в теме. Ленивые вычисления идут не от фана а от работ математика Хаскелла Карри.
Ленивость в ФП - это не просто фича а это база для построения других структур наподобие
бесконечных "рекурсивных" списков которые без ленивости просто невозможно реализовать.

Огонь!

З.Ы. Но ведь понятно, что про фан и Скалу я с небольшим сарказмом написал? Или нет?
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928613
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K
mayton
пропущено...

Ты не в теме. Ленивые вычисления идут не от фана а от работ математика Хаскелла Карри.
Ленивость в ФП - это не просто фича а это база для построения других структур наподобие
бесконечных "рекурсивных" списков которые без ленивости просто невозможно реализовать.

Огонь!

З.Ы. Но ведь понятно, что про фан и Скалу я с небольшим сарказмом написал? Или нет?

Вообще ни разу непонятно. Но ты не обижайся. Многие синьоры-помидоры от мира Java очень
плавают в настоящем ФП. Поэтому ты - не один.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928614
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K,

на AspectJ как-то так:

Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
public interface ILazyContainer {

    boolean isInitialized(Field field);

    void setInitialized(Field field);

}


@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface LazyContainer {


}


@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface LazyField {

    String computeMethod();

}

public aspect LazyFieldAspect pertypewithin(@LazyContainer *) {

    declare parents : (@LazyContainer *) implements ILazyContainer;

    pointcut getAnnotatedWithLazyField(): get(@LazyField * *);

    private Set<Field> ILazyContainer.initialized = new HashSet<>();

    public boolean ILazyContainer.isInitialized(Field field) {
        return initialized.contains(field);
    }

    public void ILazyContainer.setInitialized(Field field) {
        initialized.add(field);
    }

    before(): getAnnotatedWithLazyField() {
        try {
            ILazyContainer object = (ILazyContainer) thisJoinPoint.getTarget();
            FieldSignature fieldSignature = (FieldSignature) thisJoinPoint.getSignature();
            Field field = fieldSignature.getField();

            if (object.isInitialized(field)) {
                System.out.println("Cached");
                return;
            }

            field.setAccessible(true);

            LazyField lazyField = field.getAnnotation(LazyField.class);
            Method compute = object.getClass().getDeclaredMethod(lazyField.computeMethod());
            compute.setAccessible(true);
            field.set(object, compute.invoke(object));

            System.out.println("Computed");

            object.setInitialized(field);
        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
            throw new RuntimeException(ex);
        }
    }

}



Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
@LazyContainer
public class TestObject {

    @LazyField(computeMethod = "computeValue")
    private String value;

    private String computeValue() {
        return null;
    }

    public String getValue() {
        return value;
    }

    public static void main(String[] args) {
        TestObject object = new TestObject();
        System.out.println(object.value);
        System.out.println(object.value);
        System.out.println(object.value);

        object = new TestObject();
        System.out.println(object.value);
        System.out.println(object.value);
        System.out.println(object.value);
    }

}


Computed
null
Cached
null
Cached
null
Computed
null
Cached
null
Cached
null
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928616
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов,

Спасибо, познавательно.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928617
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K, помотри еще на Kotlin. Может там есть волшебная таблетка которая сделает тебя счастливым.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928618
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Вообще ни разу непонятно. Но ты не обижайся. Многие синьоры-помидоры от мира Java очень
плавают в настоящем ФП. Поэтому ты - не один.

Да я вообще не обижаюсь :) Ибо
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928619
Vladmir K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Vladmir K, помотри еще на Kotlin. Может там есть волшебная таблетка которая сделает тебя счастливым.

Обязательно, на досуге. Спасибо за наводки и объяснения.
...
Рейтинг: 0 / 0
Ленивая инициализация при валидном значении NULL
    #39928709
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladmir K
познавательно.
А чего вы хотели? Если цель писать меньше кода, то в жаве всего два варианта: AOP и кодогенерация, undefined в жаву не завезли.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Ленивая инициализация при валидном значении NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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