- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在查看 lambda 和 javaFX 示例项目“MaryHadALittleLambda”(https://github.com/steveonjava/MaryHadALittleLambda)。
除了方法之外,一切都编译正常
private void populateCells(Group root, final SpriteView.Mary mary) {
// Gratuitous use of lambdas to do nested iteration!
Group cells = new Group();
IntStream.range(0, HORIZONTAL_CELLS).mapToObj(i ->
Rectangle rect = new Rectangle(i * CELL_SIZE, j * CELL_SIZE, CELL_SIZE, CELL_SIZE);
rect.setFill(Color.rgb(0, 0, 0, 0));
rect.setStrokeType(StrokeType.INSIDE);
rect.setStroke(Color.BLACK);
rect.setOnMousePressed(e -> mary.moveTo(new Location(i, j)));
return rect;
})
).flatMap(s -> s).forEach(cells.getChildren()::add); // <-- ERROR HERE
root.getChildren().add(cells);
}
当我在 Eclipse 中的 forEach 行出现错误时,
The type ObservableList<Node> does not define add(Object) that is applicable here
forEach 对 cells 对象的实例方法进行方法引用,这对我来说看起来完全有效。如果我改用以下 lambda,它工作正常:
).flatMap(s -> s).forEach(r -> cells.getChildren().add((Rectangle) r));
看来 java 1.8 的每个特性对于这个 javaFx 引用都是安全编译的。我的猜测是我的 Java 版本或设置有问题吗?我正在使用:
Eclipse Standard/SDK version: Kepler Service Release 2
Eclipse Java Development Tools Patch with Java 8 support (for Kepler SR2)
并使用此 Java 版本的 JRE(命令行输出):
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
谢谢。
最佳答案
我将通过提供一些更新来回答我自己的问题:我联系了建议我尝试 java 编译器而不是 eclipse 的作者:使用 Ant 构建(并因此使用 jdk javac 编译器)编译得很好,应用程序运行。
当我查看 eclipse 中 java 8 支持的状态时,似乎有很多事情需要解决:https://bugs.eclipse.org/bugs/buglist.cgi?quicksearch=1.8%20lambda
正如@jewelsea 指出的那样,Intellij Idea 显示错误但会编译并执行(我假设它使用 jdk 提供的 javac)。
所以答案是:等待即将到来的 eclipse 和/或 jdk 更新。这个特定案例很容易变通。
真正的问题是 mapToObj
提供一个 Stream<Object>
, 循环将通过 Object
到 ::add
期望 Node
实例(如 Rectangle
是)。
关于java - Eclipse 中的 ObservableList<Node> 方法引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999649/
我有一个有趣的问题,我是 JavaFX 的新手,我需要创建一个小众市场 ObservableList执行。 本质上,我需要一个 ObservableList维护另一个 ObservableList 的
如果我有两个单独的 ObservableLists,并且都放在一个单独的 ObservableList 中用于 TableView...有没有办法在这两个 ObservableLists 和聚合的 O
当我尝试将项目设置到 tableView 中时遇到问题,有关我使用 SceneBuilder 的信息。 Main.java: public class Main extends Application
我想知道为什么TableView方法setItems不需要ObservableList作为参数,但是 ObservableList ? 还有什么是最好的转型方式ObservableList至Obser
当我将监听器附加到可观察列表并在该监听器中尝试删除一些元素时,在某些情况下它会通过,而在某些情况下会崩溃。 场景:项目已从列表中删除。它触发监听器,在该监听器中我尝试删除另一个项目。 如果在监听器中我
我在不同的条件下尝试了不同的集合,但我能够收到的所有更改都是排列、添加、删除和替换更改。 更新变化在什么条件下出现?什么基类,什么存储类以及需要什么操作来产生这样的事件? 最佳答案 要生成更新事件,您
This answer为可观察列表提供解决方案,如果列表元素的属性更改,它将发送“列表已更新” 通知>. 在我的例子中,此类可观察列表的元素(元素类)很复杂,我不喜欢为每个成员变量实现属性。因此,我在
这是我的问题:我有一堂 Detenu 课: public class Detenu { private static String n_ecrou; // Unique id p
我正在使用 JavaFX 编写日志读取器应用程序,并且我想根据所选属性实现基于搜索的过滤。 Application screenshot组合框中的值表示填充表的对象字段的名称。现在,我只想显示属性包含
给出以下代码示例: private final ObservableList data = FXCollections.observableArrayList( new Per
我有一个使用 JavaFX 的应用程序。它包含一个ListView(它使用ObservableList)。我使用添加了一个 ChangeListener list.getSelectionModel(
我有一个可观察列表,我尝试通过不同的谓词来过滤它。 我有要进行过滤的嵌套对象。 这是第一个 pojo public Class Transaction { private String na
例如,如果您有一个ArrayList,您可以执行以下操作: ArrayList list = new ArrayList(); ObservableList data = FXCollections.
我不太确定如何表达这个问题,请耐心等待。 我有一个 ObservableList用户定义的对象与几个 getter 方法,例如: public String getName() { return th
编辑 事实证明,当我实际上想要一个深拷贝时,FXCollections.observableArrayList() 正在创建列表的浅拷贝。 this.value 和 value “指向”两个不同的 O
我正在处理一个 javaFx 项目,我们必须在其中使用 ObservableList 添加 Listner。 ObservableList 包含人的模型。但是我想通过序列化将整个 Observable
我有一个自定义对象 FermentableInRecipe,它填充了一个 TableView。为了响应列表中项目的更改以及列表本身,我决定使用提取器。这是我的 ObservableList 的声明和实
我试图理解 ObservableList 和 Realms 的概念。我试图创建一个 ObservableList 的实例,如下所示: public ObservableList createObs
我有一个 Java ObservableList有数千个条目每秒接收数百个更新支持 JavaFX TableView . ObservableList 是 backed by an ArrayList
我有一张 Albums 的表格可由用户过滤和排序。 这是这张 table 的样子。如您所见,列是可排序的,顶部有一个文本框,当前正在过滤其中包含字符串“cu”的专辑: 一切正常专辑列表填充后 . 但是
我是一名优秀的程序员,十分优秀!