作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在实用程序类中有一个静态方法:
public static final <T extends Foo & IBar> Foo1<T> getBaz(Class<T> fooAndIBarClazz)
我还有另一个类:
public class FooBar<T extends Foo> {
private Class<T> fooClazz;
//...
}
从 FooBar
的实例内部调用 Utility.getBaz()
public void aMethod() {
Utility.getBaz(fooClazz); // fails with not a valid substitute for the bounded parameter
//Utility.<IBar>getBaz(fooClazz); // fails as well
}
是否可以以这种通用方式调用实用程序方法而无需额外转换?
最佳答案
Java 中的泛型添加了编译时类型检查,基本上可以帮助您避免强制转换。如果有些事情你无法通过类型转换来完成,那么你也无法通过泛型来完成它。
如果您无法确认您调用该方法的类是否实现了 IBar,那么您希望被调用的方法用它做什么?显然,它需要 IBar 定义的方法(否则它不会有该签名)。因此它无法执行其工作。
关于java - Java 中另一个令人困惑的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11989284/
很抱歉新手的问题,但是: 我最近才发现“=”运算符不只是处理对象/等等。值(value),也是引用。这很酷,但我认为这对变量来说是不一样的,它不会在存储整数或 float 的变量之间创建引用。后来我觉
我是一名优秀的程序员,十分优秀!