是否有可能有一个类型参数扩展2个其他类型参数?



我的目标是:我希望有一个参数需要同时是两种不同的类型。

这里的目标是仅使用泛型(没有强制转换或instanceof)从单个对象中提取两种不同的类型。

我的想法是有第三个类型参数,extends其他两个。

class DualType<A, B> {
A a;
B b;
<T extends A & B> DualType(T obj) {
a = obj;
b = obj;
}
}

这不起作用。由于java不支持多重继承,并且编译器无法保证B不是另一个类,因此会得到一个错误。

我的问题是:是否有某种方法可以定义一个类型参数,限制它只能与接口一起使用?我假设您可以使用implements而不是extends,但我们都知道,只有superextends在类型参数声明中有效。有解决这个问题的方法吗?还是根本不可能?

我想实现的东西在这里并不适合一些实用的目的,但我很想知道类似于Java这是可能的吗?

是否有某种方法来定义一个类型参数,限制它只能与接口一起使用?

编译器无法知道AB是接口还是类,因为这些类型变量只是占位符,实际类型将在运行时提供。

由于类型变量T有多个边界<T extends A & B>,只有A可以是一个类,B应该是一个接口。但是B几乎可以是任何东西,因此构造函数会导致编译错误。

只有"super"one_answers";extends"在类型参数声明中有效

这是不对的。super只能用于通配符,不能用于有界类型。T super MyInterface将无法编译。对于有界类型形参,我们只能使用extends

并且不可能通过使用extends让编译器知道B是一个接口。即使bound是一个接口B extends MyInterface,也不意味着B也应该是一个接口。

没有办法实现你想要做的事。

相关内容

  • 没有找到相关文章

最新更新