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