Rag*_*ghu 1 java lambda optional java-8
我是java 8的新手并且学习lambda表达式.
我有一个界面.
Configuration.java
package com.raghu.example;
import java.util.Map;
public interface Configuration {
public Map<String,String> getPayload();
}
Run Code Online (Sandbox Code Playgroud)
Impl用于接口:ConfigurationImpl.java
package com.raghu.example;
import java.util.HashMap;
import java.util.Map;
public class ConfigurationImpl implements Configuration {
@Override
public Map<String, String> getPayload() {
Map<String,String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
//return null;
return map;
}
}
Run Code Online (Sandbox Code Playgroud)
我的主程序:Sample.java
package com.raghu.example;
import java.util.Optional;
public class Sample {
Configuration config;
/*
* if config is null, return "";
* if config.getPaylaod is null, return "";
* if config.payload is not null and if key value is present, then return the value
* if config.payload is not null and if invalid key, then return "";
*
*/
String test(String key) {
config = new ConfigurationImpl();
String dataValue = "";
/** java 7
if (StringUtils.isNotEmpty(key)) {
try {
String input= config.getPayload()==null?"":config.getPayloadmap().get(key);
return (input!=null?input:"");
} catch (Exception e) {
return "";
}
}
return "";
}**/
Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);});
// //cdataValue=str;});
// //Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);return str;});
return dataValue;
}
public static void main(String[] args) {
Sample s = new Sample();
String value="";
value=s.test("key"); //pass invalid , should return "";
System.out.println(value);
value=s.test("key1"); //pass invalid , should return actual value
System.out.println(value);
}
}
Run Code Online (Sandbox Code Playgroud)
现在在方法测试中,我想做以下[""].
如何在java 8中执行此操作?
试过这个:
错误1:Void方法无法返回值
Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);return str;});
Run Code Online (Sandbox Code Playgroud)错误2:在封闭范围内定义的局部变量dataValue必须是最终的或有效的最终.
Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);dataValue= str;});
Run Code Online (Sandbox Code Playgroud)添加final并没有解决.
还发布了java 7代码,我正在尝试用lambda表达式解决java 7的if-else部分.
你可以继续链接.map(...).如果在任何步骤中发生null,它将使整个事物变为空Optional,然后orElse("")将返回默认值.
return Optional.ofNullable(config)
.map(Configuration::getPayload)
.map(c->c.get(key))
.orElse("");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12698 次 |
| 最近记录: |