我如何编写一个ThrowingSupplier并使用未经检查的方法来替换这部分代码?我真的不知道如何从它开始,应该是接口还是类。
void
我想得到的是类似的东西
public class UserDao {
@Insert
long insert(User user);
@Update
int update(User user);
@Query("SELECT id FROM user WHERE ROWID = :rowid")
int getIdFromRowid(long rowid);
// …
}
任何想法应该是什么样子?我不确定是应该尝试编写的接口还是类,但是我无法创建未经检查的静态方法,也不会创建该方法的新实例。
答案 0 :(得分:1)
如果我理解正确,这就是您想要的:
public class ThrowingSupplier {
public static <T> Supplier<T> unchecked(Callable<T> callable) {
return () -> {
try {
return callable.call();
}
catch (Exception e) {
throw new UndeclaredThrowableException(e);
}
};
}
// example usage:
public static void main(String[] args) {
DataSource dataSource = null;
Connection connection = ThrowingSupplier.unchecked(dataSource::getConnection).get();
}
}