我通常在Delphi中编写代码,但是我必须快速地使用Java进行追赶 对于一个特定的项目。我在识别Java方面遇到了问题 因为可能是因为许多Delphi语言功能的等价物 不同的术语用于指代它们。
我从Java语言规范中看到它支持lambda 表达式,所以我想我能找到一些显示Java等效于匿名方法的例子。
我的问题是Java是否具有以下等价物 Delphi类型,如果是,它们的名称或等价物 Java构造:
传统程序,功能类型,如type MyProc = procedure(I : Integer)
procedure of object
和function of object
(我希望这些都足够接近一个问题)
答案 0 :(得分:4)
在Java中,方法永远不会是独立的,它们总是绑定到接口/类。因此没有什么可以为。
它使用Lambda表达式并将其分配给变量allPilots
...
Predicate<Person> allPilots = p -> p.getAge() >= 23 && p.getAge() <= 65;
...并使用它从不同的地方调用该方法:
System.out.println("\n=== Mail all Pilots ===");
robo.mailContacts(pl, allPilots);
...
public void mailContacts(List<Person> pl, Predicate<Person> pred) {
for (Person p : pl) {
if (pred.test(p)) {
roboEmail(p);
}
}
}
其中Predicate接口定义为
public interface Predicate<T> {
public boolean test(T t);
}
这在功能上接近Delphi中对象的功能(因为接口具有返回类型)。对于对象方法,函数接口根本没有返回类型(void)。
答案 1 :(得分:3)
Java没有等效的Delphi Procedural Types,它允许您将过程和函数视为可以分配给变量或传递给其他过程和函数的值。
最近的函数匹配是Java Anonymous Class,它允许你同时声明和实例化类。