微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java泛型中是否有任何模仿的方法

如何解决Java泛型中是否有任何模仿的方法

在非常极端的情况下(没有的Java 7之前的版本AutoCloseable),我也希望能够做到这一点。例如

<E extends Connection or Statement or ResultSet>

E.close()不管实际的类型是什么,这都允许我打电话。换句话说,E将包含所有提供的类型的“ API交集”。在这种情况下,将含有close(),并从所有方法java.sql.Wrapperjava.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 举报,一经查实,本站将立刻删除。