Почему не загружается дочерний контроллер

ДА, вы можете изменить переменные-члены экземпляра, но вы НЕ МОЖЕТЕ изменить сам экземпляр так же, как при обработке переменных.

Что-то вроде этого, как упоминалось:

    class Car {
        public String name;
    }

    public void testLocal() {
        int theLocal = 6;
        Car bmw = new Car();
        bmw.name = "BMW";
        Stream.iterate(0, i -> i + 2).limit(2)
        .forEach(i -> {
//            bmw = new Car(); // LINE - 1;
            bmw.name = "BMW NEW"; // LINE - 2;
            System.out.println("Testing local variables: " + (theLocal + i));

        });
        // have to comment this to ensure it's `effectively final`;
//        theLocal = 2; 
    }

Основной принцип ограничения локальных переменных - это данные и достоверность вычислений

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

Но, как мы знаем, Основная цель lambdas

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

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

Всякий раз, когда создается объект, он всегда сохраняется в пространстве кучи, а в стеке содержится ссылка на него ,

Так что, чтобы суммировать, есть две точки, которые, я думаю, действительно имеют значение:

  1. Очень сложно сделать экземпляр эффективным окончательным , что может вызвать много бессмысленного бремени (просто представьте себе глубоко вложенный класс);
  2. сам экземпляр уже глобально разделен и lambda также разделяется между потоками, поэтому они могут работать вместе правильно, поскольку мы знаем, что мы обрабатываем мутацию и хотим передать эту мутацию;

Балансовая точка здесь понятна: если вы знаете, что делаете, вы можете сделать это легко, но если нет, то ограничение по умолчанию поможет избежать коварных ошибок ,

P.S. Если требуется синхронизация в мутации экземпляра, вы можете напрямую использовать методы сокращения потока или, если есть проблема с зависимостями в мутации экземпляра, вы все равно можете использовать thenApply или thenCompose в Функция , тогда как mapping или методы аналогичны.

0
задан Sameer 16 January 2019 в 16:31
поделиться

1 ответ

Использовать вид по умолчанию, установленный для состояния.

...
views: {
    '': {
           controller: 'loginController'
     }
}
...

...
views: {
      '': {
          controller: 'loginEmailController',
          templateUrl: '/components/loginEmail/loginEmailView.html'
      }
}
...
0
ответ дан bugMaker-237 16 January 2019 в 16:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: