В приведенном ниже коде я пытаюсь понять концепцию Optional, предлагаемую в java-8.Я создал приведенный ниже пример, чтобы понять принцип, лежащий в основе orElse ().После выполнения кода тело defaultMethod () было выполнено и вернуло
new User("DEFAULT_USER", "default@gmail.com", "0000", null);
объекту y.оператор журнала печатал правильные данные, как я и ожидал.
Вопрос в том, почему не были напечатаны все журналы внутри defaultMethod () ??isElse () был введен для возврата значений только без выполнения всего тела предоставленного метода .?
code :
@Override
protected void onResume() {
super.onResume();
User user_1 = this.getUser_1();
User user_2 = this.getUser_2();
User user_3 = this.getUser_3();
User y = OptionalsUtils.toOptional(user_1)
.map(u1 -> this.getUser_3())
.orElse(this.defaultMethod());
Log.i(TAG_LOG, "orElse->y: " + y.getUserName());
}
private User getUser_3() {
List<String> list = new ArrayList<String>(5);
list.add("espn");
list.add("qtv");
list.add("der Spiegel");
list.add("deutsch welle");
User user = new User();
user.setUserName("johannas");
user.setUserEmailAddres("joha90@gmail.com");
user.setUserId("2345");
user.setUserFavoritesTvList(null);
return null;
}
private User defaultMethod() {
Log.w(TAG_LOG, "defaultMethod is called1");
Log.w(TAG_LOG, "defaultMethod is called2");
Log.w(TAG_LOG, "defaultMethod is called3");
Log.w(TAG_LOG, "defaultMethod is called4");
Log.w(TAG_LOG, "defaultMethod is called5");
Log.w(TAG_LOG, "defaultMethod is called5");
Log.w(TAG_LOG, "defaultMethod is called5");
Log.w(TAG_LOG, "defaultMethod is called5");
return new User("DEFAULT_USER", "default@gmail.com", "0000", null);
}
log :
2018-12-17 12:46:15.774 20158-20158/com.example.optionals_00 W/ActMain: defaultMethod is called1
2018-12-17 12:46:15.774 20158-20158/com.example.optionals_00 W/ActMain: defaultMethod is called2
2018-12-17 12:46:15.774 20158-20158/com.example.optionals_00 W/ActMain: defaultMethod is called3
2018-12-17 12:46:15.774 20158-20158/com.example.optionals_00 W/ActMain: defaultMethod is called4
2018-12-17 12:46:15.774 20158-20158/com.example.optionals_00 W/ActMain: defaultMethod is called5
2018-12-17 12:46:15.774 20158-20158/com.example.optionals_00 W/ActMain: defaultMethod is called5
2018-12-17 12:46:15.774 20158-20158/com.example.optionals_00 I/ActMain: orElse->y: DEFAULT_USER