Cep*_*pod 8 java generics syntax-error
给定一个通用接口
interface Foo<A, B> { }
Run Code Online (Sandbox Code Playgroud)
我想编写一个实现,要求A成为B的子类.所以我想这样做
class Bar<A, B super A> implements Foo<A, B> { }
// --> Syntax error
Run Code Online (Sandbox Code Playgroud)
要么
class Bar<A extends B, B> implements Foo<A, B> { }
// --> illegal forward reference
Run Code Online (Sandbox Code Playgroud)
但似乎有效的唯一解决方案是:
class Bar<B, A extends B> implements Foo<A, B> { }
Run Code Online (Sandbox Code Playgroud)
这有点难看,因为它颠倒了通用参数的顺序.
这个问题有什么解决方案或解决方法吗?
由于这在Java中是不可能的,因此尝试以Bar<B, A extends B>不同的方式思考.
声明变量时Bar,首先指定父类,然后指定子类.这是Bar有效的.不要认为它是倒退 - 认为它是前锋.父母应该自然地在孩子面前指定.您添加的这个附加关系是驱动参数顺序的因素,而不是底层接口.
| 归档时间: |
|
| 查看次数: |
1094 次 |
| 最近记录: |