我有以下类似的代码(尽可能简化),编译:
class Test {
enum TestEnum {
ELEMENT1(Test::methodUsingTestclass1);
<T extends TestInterface> TestEnum(Consumer<T>... consumers) {
}
}
static void methodUsingTestclass1(TestClass1 testClass1) {
}
static void methodUsingTestclass2(TestClass2 testClass2) {
}
interface TestInterface {
}
class TestClass1 implements TestInterface {
}
class TestClass2 implements TestInterface {
}
}
现在我想指定 Consumer
她在我的房间里 enum
:
enum TestEnum {
ELEMENT1(Test::methodUsingTestclass1, Test::methodUsingTestclass2);
<T extends TestInterface> TestEnum(Consumer<T>... consumers) {
}
}
它不再编译:
类型参数t的上限不兼容:test.testclass1和test.testclass2 T
工具 TestInterface
,我想定义一个或多个 Consumer
他在做手术 T
. 换句话说,方法引用的列表,这些方法引用接受 TestInterface
.
我试过这个:
enum TestEnum {
ELEMENT1(Test::methodUsingTestclass1, Test::methodUsingTestclass2);
<T extends TestInterface> TestEnum(Consumer<? extends T>... consumers) {
}
}
但我仍然得到同样的编译错误。
如何修改代码使其构造函数接受零或更多 Consumer
在不同的实现上运行 TestInterface
?
暂无答案!
目前还没有任何答案,快来回答吧!