为什么这个java接口定义使用编译器接受的泛型?

朱莉安娜。

我想了解为什么编译器会抱怨这个接口声明。T 是泛型类型参数。

static class Bar<T extends Comparable<?>> {}
static interface Foo<T extends Comparable<?>, Bar<T>> { }

编译器说

Error:(64, 53) Groovyc: unexpected token: <

(64, 53) 是<第二个之前T

我想要的是有一个接口 Foo,它可以与包含扩展 Comparable 的任何类的 Bar 实例一起使用。

JB尼泽

我想要的是有一个接口 Foo,它可以与包含扩展 Comparable 的任何类的 Bar 实例一起使用。

那么 Bar 应该是通用的,接口应该只是在 T 上参数化:

class Bar<T> {...}

interface Foo<T extends Comparable<?>> {
    Bar<T> doSomething(Bar<T> otherBar);
    ...
}

或者,如果您还希望 Foo 在扩展 Bar 的类型上是通用的,那么它应该类似于

interface Foo<T extends Comparable<?>, B extends Bar<T>> {
    B doSomething(B otherBar);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Java编译器失去构造函数实例化轨道泛型类型的?

Java的泛型数组:为什么这个编译和这是什么意思?

Java泛型。为什么要编译?

为什么这个简单的Java泛型函数无法编译?

Java泛型:这里的编译器有什么问题?(“没有唯一的最大实例”)

Java-本地类和泛型,为什么会出现编译器警告?

Java泛型-接受不同泛型接口的方法

泛型混淆:欺骗编译器

Eclipse编译器和Javac之间的差异-枚举,接口和泛型

当运行时类型也是泛型类型时,将方法引用用作期望使用泛型类型接口的方法的lambda时,编译器错误

为什么编译器不推断泛型

如果我已经实现了Drop,为什么使用PhantomData通知编译器结构拥有泛型有用吗?

为什么编译器不对扩展接口的泛型强制执行返回类型值?

为什么C#编译器不认为这种泛型推断是模棱两可的?

为什么编译器可以与未关闭的泛型一起使用?

为什么编译器声称泛型即使应有也不实现`Display`?

调用泛型方法java的编译器错误

为什么这种带有泛型的Kotlin代码会产生Type Mismatch编译器错误?

为什么Kotlin编译器不强迫我初始化接口中定义的val?

为什么运算符<对于Java泛型有编译器错误?

泛型和迭代器的Java编译器错误

Java泛型-编译器错误

Java:递归泛型编译器错误

使用Java泛型并将List作为方法参数的编译器错误并引发泛型异常

为什么 Red Hat 提供使用不同 Java 编译器版本编译的构建?

为什么编译器不允许从 peek 方法返回的泛型不是可选的?

Java 泛型:为什么这个嵌套模板会失败?

为什么编译器做这个除法

为什么编译器在父构造函数中不理解泛型父类型