Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将ReactFx Var.MapBidirective绑定到JavaFx属性时类型推断失败_Java_Javafx_Lambda_Type Inference_Reactfx - Fatal编程技术网

将ReactFx Var.MapBidirective绑定到JavaFx属性时类型推断失败

将ReactFx Var.MapBidirective绑定到JavaFx属性时类型推断失败,java,javafx,lambda,type-inference,reactfx,Java,Javafx,Lambda,Type Inference,Reactfx,我正在尝试将TextField.textProperty()绑定到自定义控件中的ObjectProperty。以下代码在Eclipse中编译和运行: package main.java import java.time.LocalDateTime; import org.reactfx.value.Var; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleStringProper

我正在尝试将
TextField.textProperty()
绑定到自定义控件中的
ObjectProperty
。以下代码在Eclipse中编译和运行:

package main.java

import java.time.LocalDateTime;

import org.reactfx.value.Var;

import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleStringProperty;

public class Playbook {
    public void bindTimeString(final ObjectProperty<LocalDateTime> timepoint, final SimpleStringProperty textProperty) {
        Var.mapBidirectional(textProperty, s -> LocalDateTime.now(), t -> "").bindBidirectional(timepoint);
    }

}
按预期使用Eclipse和maven从命令行编译


这感觉像是类型推断实现中的编译器错误,但我不是Java语言规范的专家。我希望可以从lambda返回值推断类型。在任何情况下,Eclipse的java编译器或JDK编译器都是错误的。

为了帮助编译器,您可以在第一个代码段中指定类型,如下所示:
Var.mapbuildiable
@TomasMikula当然我可以手动指定类型,但编译器应该足够聪明,可以为我找到它。所有这些都在那里,Eclipse编译器就完成了。我想知道为什么jdkjavac不能做到这一点。顺便说一句,ReactFx做得很好!如果没有它,我不想编写JavaFx应用程序。
javac -classpath reactfx-2.0-M5.jar Playbook.java
Playbook.java:12: error: no suitable method found for bindBidirectional(ObjectProperty<LocalDateTime>)
        Var.mapBidirectional(textProperty, s -> LocalDateTime.now(), t -> "").bindBidirectional(timepoint);
                                                                             ^
    method Property.bindBidirectional(Property<Object>) is not applicable
      (argument mismatch; ObjectProperty<LocalDateTime> cannot be converted to Property<Object>)
    method Var.bindBidirectional(Property<Object>) is not applicable
      (argument mismatch; ObjectProperty<LocalDateTime> cannot be converted to Property<Object>)
1 error
public void bindTimeString(final ObjectProperty<LocalDateTime> timepoint, final SimpleStringProperty textProperty) {
    final Var<LocalDateTime> v = Var.mapBidirectional(textProperty, s -> LocalDateTime.now(), t -> "");
    v.bindBidirectional(timepoint);
}