在現代Java編程中,因為Lambda表達式的引入,我們可能更便利地轉達函數。本文將探究在Java中轉達函數的多少種方法。 起首,我們可能經由過程實現接口的方法來轉達函數。在Java 8之前,這是最罕見的做法。比方,我們可能定義一個接口,然後在轉達實現這個接口的匿名外部類時,現實上就是在轉達一個函數。 以一個簡單的例子開端,假設我們有一個Runnable接口,我們可能如許轉達它:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello, world!");
}
});
thread.start();
從Java 8開端,我們可能利用Lambda表達式來簡化上述代碼:
Thread thread = new Thread(() -> System.out.println("Hello, world!"));
thread.start();
其余,Java 8還引入了Functional Interface(函數式接口)的不雅點,這是一種只有一個抽象方法的接口,可能被隱式地轉換成Lambda表達式。比方,我們可能定義一個如許的函數式接口:
FunctionalInterface MyFunction<T> {
T apply(T t);
}```
然後我們可能如許轉達函數:
```java
MyFunction<String> upperCase = (String s) -> s.toUpperCase();
System.out.println(upperCase.apply("hello"));
在某些情況下,我們可能須要轉達方法引用。Java也支撐這一特點。比方:
List<String> list = Arrays.asList("a", "b", "c");
list.forEach(System.out::println);
上述代碼利用了方法引用,相稱於轉達了一個函數給forEach方法。 總結,Java中轉達函數有多少種方法:經由過程實現接口的匿名外部類,利用Lambda表達式,以及利用方法引用。這些方法各有上風,可能根據具體場景機動抉擇。