Nếu bạn không cần bất cứ thứ gì như loại của mình, bạn có thể sử dụng void. Điều này có thể được sử dụng để triển khai các chức năng hoặc hành động. Sau đó, bạn có thể làm điều gì đó như sau:
interface Action<T> {
public T execute();
}
abstract class VoidAction implements Action<Void> {
public Void execute() {
executeInternal();
return null;
}
abstract void executeInternal();
}
Hoặc bạn có thể bỏ qua lớp trừu tượng và thực hiện trả về null trong mọi hành động mà bản thân không yêu cầu giá trị trả về.
Sau đó, bạn có thể sử dụng những hành động như sau:
Đưa ra một phương pháp
private static <T> T executeAction(Action<T> action) {
return action.execute();
}
bạn có thể gọi nó như thế
String result = executeAction(new Action<String>() {
@Override
public String execute() {
//code here
return "Return me!";
}
});
hoặc, đối với hành động void (lưu ý rằng bạn không gán kết quả cho bất kỳ thứ gì)
executeAction(new VoidAction() {
@Override
public void executeInternal() {
//code here
}
});