Java8 Lambda 语法请教

2017-07-02 20:52:40 +08:00
 doggg

public interface OneCallback<T> {
    T callbakc();
}
protected abstract <T> T get(OneCallback<T> some);
    

String s = a.get(new OneCallback<String>() {
	@Override
	public String callback() {
		return null;
	}
});
HashMap<String, String> map = a.get(new OneCallback<HashMap<String, String>>() {
	@Override
	public HashMap<String, String> callback() {
		return null;
	}
});

//上面语法正确,这里想使用 lambda,应该怎么写
a.get(  s -> {

});

目的是想根据传入的类型来决定返回的类型,lambda 不知道怎么写

1603 次点击
所在节点    问与答
4 条回复
sagaxu
2017-07-02 21:45:17 +08:00
String x = a.get(() -> null);
feiyuanqiu
2017-07-02 21:56:42 +08:00
你这思路没对吧,为什么要在泛型方法里判断参数的具体类型?
hpeng
2017-07-02 22:16:05 +08:00
你的都没有入参啊。所以,就是`()-> {any else}` jdk8 类型推导已经比前面好很多了。不需要你指定传入的类型
doggg
2017-07-02 23:24:35 +08:00
cool。感谢各位。已经解决了。自己造了一个 redis 工具类用来实现 lambda 操作,可以返回指定类型了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372541

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX