JavaFX TableColumn.setCellFactory缺少对OpenJDK8的通用限制?

时间:2015-07-12 19:02:00

标签: java eclipse generics javafx openjdk

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>>());
    }
}                                                                     

0 个答案:

没有答案