我最近在探索 javafx 时遇到了下面这段代码,我看到 ObservableList 是一个接口(interface)并且没有它的实现,你怎么能使用它的变量?很明显我在这里遗漏了一些东西,任何人都可以指出我正确的方向吗?
List list = new ArrayList(); ObservableList observableList = FXCollections.observableList(list); observableList.addListener(new ListChangeListener() { @Override public void onChanged(ListChangeListener.Change change) { System.out.println("Detected a change! "); } });
最佳答案
FXCollections.observableList()
方法返回实现该接口(interface)的类的实例。你在这里看不到这个类的名字,但你不需要看到它(或者实际上,甚至不需要知道它是什么)。这是面向对象编程的多态性的全部要点:你、客户端,只与接口(interface)打交道;创建实现它的实际类或类集是其他人的工作。如果你得到这一点,那么你就掌握了一切。
关于没有实现的java接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805692/