TableColumn.setCellFactory具有以下签名:
public final void setCellFactory
(Callback<TableColumn<S,T>, TableCell<S,T>> value) { cellFactory.set(value);}
出乎意料的是,这编译:
myColumn.setCellFactory(x->{return "";});
即便如此:
myColumn.setCellFactory(new Callback<BigInteger, HashMap>()
{
@Override public HashMap call(BigInteger big)
{return new HashMap();}
});
在运行时,我得到一个ClassCastException,但是我希望在编译时捕获它。然而,Eclipse将签名显示为没有通用限制的“回调”。这里有什么问题,是Eclipse,JavaFX还是OpenJDK,在这种情况下如何才能正确获取编译错误?
我使用Eclipse Luna和OpenJDK 1.8.0-45并在Arch Linux上安装了JavaFX。
P.S。:以下正确地给了我两个编译错误:
import java.util.*;
import java.util.Map.Entry;
class Test
{
static void picky(List<String> stringList) {}
static void reallyPicky(List<List<String>> stringListList) {}
public static void main(String[] args)
{
picky(new ArrayList<Integer>());
reallyPicky(new ArrayList<List<Integer>>());
}
}