相关疑难解决方法(0)

为什么我不能在具有多个边界的类型参数中使用类型参数?

所以,我的理解以下不工作,但为什么不工作?

interface Adapter<E> {}

class Adaptulator<I> {
    <E, A extends I & Adapter<E>> void add(Class<E> extl, Class<A> intl) {
        addAdapterFactory(new AdapterFactory<E, A>(extl, intl));
    }
}
Run Code Online (Sandbox Code Playgroud)

add()方法给出了一个编译错误,"当第一个绑定是一个类型参数时,无法指定任何其他绑定的适配器<E>"(在Eclipse中),或者"类型参数不能跟随其他边界"(在IDEA中),请选择.

很明显,你只是不允许在I那之前使用type参数&,那就是那个.(而且在你问之前,如果你改变它们就行不通,因为不能保证它I不是一个具体的类.)但为什么不呢?我查看了Angelika Langer的常见问题解答并找不到答案.

通常,当某些泛型限制看似随意时,这是因为您创建了一种类型系统无法实际执行正确性的情况.但我不知道哪种情况会破坏我在这里要做的事情.我可能会说它可能与类型擦除后的方法调度有关,但是只有一种add()方法,所以它不像是有任何歧义......

有人能为我证明这个问题吗?

java generics constraints

51
推荐指数
3
解决办法
1万
查看次数

Java泛型 - 使Generic扩展2个接口

你是如何做这项工作的:

public class Frankenstein<T extends IHuman, IMonster>{
}
Run Code Online (Sandbox Code Playgroud)

没有制作

public interface Weirdo extends Ihuman, IMonster{
}
Run Code Online (Sandbox Code Playgroud)

编辑

为什么这不起作用?

public <T> void mapThis(
        Class<? extends MyClass<T>> key, Class<? extends T & IDisposable> value) {

}
Run Code Online (Sandbox Code Playgroud)

我将编译器消息标记Class<? extends T & IDisposable>为错误.

java generics interface class

43
推荐指数
2
解决办法
5万
查看次数

标签 统计

generics ×2

java ×2

class ×1

constraints ×1

interface ×1