gpt4 book ai didi

java - Java 中另一个令人困惑的泛型

转载 作者:行者123 更新时间:2023-12-01 16:33:27 25 4
gpt4 key购买 nike

我在实用程序类中有一个静态方法:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com