【发布时间】:2013-08-12 00:18:50
【问题描述】:
我有一些类似的东西:
interface Foo<T> {
//... lines [0,45]...
/*line 46*/ <R, X super T&R> List<X> weave(R value);
//...
}
但 IntelliJ 正在报告:
- 错误:(46, 18) java:> 预期
- 错误:(46, 19) java: 类型的非法开始
- 错误:(46, 26) java: '(' 预期
- 错误:(46, 28) java: 预期
- 错误:(46, 29) java: 'l' 预期
- 错误:(46, 43) java: 预期
有什么问题?我不允许将名称绑定到下限吗?还是我只允许在上限中使用R&X 表达式?
改成
interface Foo<T> {
//... lines [0,45]...
/*line 46*/ <R> List<? super T&R> weave(R value);
//...
}
产量
- 错误(46, 31) java: > 预期
- 错误(46, 32) java: '(' 预期
- Error(46, 33) java: 类型的非法开始
【问题讨论】:
-
@rgettman 仅供参考,您的答案是正确的。反对者和支持反对者的人将通配符与类型参数混淆了。 “你不能将一个类型变量声明为超级”:stackoverflow.com/questions/2800369/…“你不能声明两个本身就是泛型类型参数的边界”:stackoverflow.com/questions/13101991/…
标签: java generics syntax-error bounded-wildcard