[问题] java 观念请益

楼主: SongIceFire (冰与火之歌)   2021-02-05 07:21:09
主要是来自于这个问题以及 github
https://stackoverflow.com/questions/32209248/java-util-stream-with-resultset
https://github.com/claudemartin/streamed-sql
在 Example.java 中
...
strsql.stream("SELECT * FROM FOO WHERE NAME LIKE 'L%' ORDER BY NAME", Foo::o
f))
...
这个
Foo::of 是建构式参考
但在 StreamedSQL.java 中 strsql.stream() 这个方法签署传入的是接口
public <T> Stream<T> stream(final String query, final ResultSetMapper<T> map
per) throws SQLException {
return stream(this.getDefConn(), query, mapper);
}
只知道静态方法签署中参数与回传值相同所以可使用建构式参考
但不清楚为何传入的是 ResultSetMapper 接口
以及从何得知T的实际型态为 Foo
另外 Foo::of 可以改用 lambda 写吗
谢谢
作者: ssccg (23)   2021-02-05 09:30:00
不是得知T型态为Foo,是因为用了Foo::of所以T才确定是Foo方法或建构式参考就是参数和回传值跟函式接口的方法一样就能拿来当接口实作,Foo::of 是 (ResultSet) -> FooResultSetMapper<T>的map是 (ResultSet) -> T所以Foo::of可以实作ResultSetMapper<Foo>
楼主: SongIceFire (冰与火之歌)   2021-02-06 04:24:00
先谢谢,我先再翻一下书看看这部分

Links booklink

Contact Us: admin [ a t ] ucptt.com