我有代码:
shared Integer getInt() {
return 42;
}
shared Integer() i1() {
return getInt;
}
shared Callable<Integer,Nothing> i2() {
return getInt;
}
shared Callable<Integer,[]> i3() {
return getInt;
}
void run() {
// OK
i1()();
// Illegal `[] is not assignable to Nothing`
i2()();
// OK
i3()();
}不过,我不确定为什么编译器可以使用"i2“声明。Nothing是everything的子类型,因此是空元组的子类型,所以我可以在某种程度上理解为什么我可以进行声明。但是一旦我这样做了,我似乎不可能正常地调用"i2“,因为调用它时没有参数,空元组,意味着用它想要的超类型来调用它,而锡兰拒绝了它。那么,是否可以调用从i2返回的getInt呢?
https://stackoverflow.com/questions/41371784
复制相似问题