用Java 8中的Lambda表达式替换内联事件处理程序

时间:2016-05-08 10:46:15

标签: lambda java-8

我有以下代码,我想用lambda表达式替换EventHandler

varName.setOnEditCommit(
    new EventHandler<CellEditEvent<Attribute, String>>() {
        @Override
        public void handle(CellEditEvent<Attribute, String> t) {
            System.out.println(t.getNewValue());
        }
    }
);

我试过了:

varName.setOnEditCommit((CellEditEvent<Attribute, String> t)->{
      System.out.println(t.getNewValue());
});

但是,我收到了错误:

  

不兼容的类型:lambda表达式中不兼容的参数类型

任何人都知道这是为什么?

1 个答案:

答案 0 :(得分:0)

我认为你在定义变量时错过了EventHandler:

varName.setOnEditCommit((EventHandler<CellEditEvent<Attribute, String>>) t -> 
    System.out.println(t.getNewValue()));