在非常极端的情况下(没有的Java
7之前的版本
AutoCloseable),我也希望能够做到这一点。例如
<E extends Connection or Statement or ResultSet>
E.close()不管实际的类型是什么,这都允许我打电话。换句话说,
E将包含所有提供的类型的“
API交集”。在这种情况下,将含有
close(),并从所有方法
java.sql.Wrapper和
java.lang.Object。
但不幸的是,您无法做到这一点。而是使用方法重载,例如
void close(Connection c);void close(Statement s);void close(ResultSet r);
还是普通的
instanceof
if (obj instanceof Connection) { ((Connection) obj).close();}else if (obj instanceof Statement) { //...或修复您的设计,因为无论如何您不必交叉任何类型的API



