如何解决Java泛型中是否有任何模仿的方法
在非常极端的情况下(没有的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
解决方法
编辑:我改变了一些例子,以获得想法:
喜欢
<Integer or Float>
…而无需创建公共接口并为Integer和Float创建子类来实现它
如果没有,类似这样的东西可能会更有意义并且有用
<E extends Number> <E = (Integer|Float)>
如果呢?是一个通配符,为什么我们不应该限制某些类型?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。