类型不一致可以编译通过吗
Topic source换个角度, 如果是从lambda表达式理解的话. 按照Lambda基础那一节的理解, 我是这么想的:
Arrays.sort()方法, 要么传入的对象实现了Comparable<T>接口, 要么传入一个Comparator实例
总的来说都是因为排序的过程要用到compareTo()方法对吗.
那么以此类推的话, 相当于LazyConnectionProxy的构造方法里面需要用到下面这个方法吧
() -> {
try {
Connection conn = DriverManager.getConnection(url, username, password);
System.out.println("Open connection: " + conn);
return conn;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
无法理解
Supplier<Connection> sp = () -> {
try {
Connection conn = DriverManager.getConnection(url, username, password);
System.out.println("Open connection: " + conn);
return conn;
} catch (SQLException e) {
throw new RuntimeException(e);
}
});
Connection conn = new LazyConnectionProxy(sp);
- 1
Alive
想问一下廖老师:
LazyDataSource这个类的getConnection方法里面, 创建的是Connection实例conn.
然后直接传给了LazyConnectionProxy, 我理解应该是作为构造方法的参数传入了对吧.
但是LazyConnectionProxy的构造方法里面定义的不是Supplier<Connection>泛型吗,
那不就变成supplier = conn, 这样为什么是可以的呢, 是我哪一块知识点miss掉了吗?