Jika Anda tidak membutuhkan apa pun sebagai tipe Anda, Anda dapat menggunakan void. Ini dapat digunakan untuk mengimplementasikan fungsi, atau tindakan. Anda kemudian dapat melakukan sesuatu seperti ini:
interface Action<T> {
public T execute();
}
abstract class VoidAction implements Action<Void> {
public Void execute() {
executeInternal();
return null;
}
abstract void executeInternal();
}
Atau Anda bisa menghilangkan kelas abstrak, dan melakukan pengembalian null dalam setiap tindakan yang tidak memerlukan nilai pengembalian sendiri.
Anda kemudian dapat menggunakan tindakan seperti ini:
Diberikan metode
private static <T> T executeAction(Action<T> action) {
return action.execute();
}
Anda bisa menyebutnya seperti
String result = executeAction(new Action<String>() {
@Override
public String execute() {
//code here
return "Return me!";
}
});
atau, untuk tindakan void (perhatikan bahwa Anda tidak menetapkan hasilnya untuk apa pun)
executeAction(new VoidAction() {
@Override
public void executeInternal() {
//code here
}
});