我有代码:
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 是一切的子类型,因此是空元组的子类型,所以我可以理解为什么我可以进行声明。但是一旦我这样做了,我似乎不可能正常调用“i2”,因为没有参数调用它,空元组,意味着用锡兰拒绝的它想要的超类型调用它。那么有没有可能调用getInt
从i2返回的?