আপনার ধরণের হিসাবে যদি আপনার কেবল প্রয়োজন না হয় তবে আপনি অকার্যকর ব্যবহার করতে পারেন। এটি কার্যকারিতা বা ক্রিয়া বাস্তবায়নের জন্য ব্যবহার করা যেতে পারে। আপনি তখন এরকম কিছু করতে পারেন:
interface Action<T> {
public T execute();
}
abstract class VoidAction implements Action<Void> {
public Void execute() {
executeInternal();
return null;
}
abstract void executeInternal();
}
অথবা আপনি বিমূর্ত শ্রেণিটি বাদ দিতে পারেন এবং প্রতিটি ক্রিয়ায় রিটার্নটি শূন্য করতে পারেন যার জন্য নিজেকে কোনও ফেরতের মূল্যের প্রয়োজন হয় না।
তারপরে আপনি এই ক্রিয়াগুলি এর মতো ব্যবহার করতে পারেন:
একটি পদ্ধতি দেওয়া
private static <T> T executeAction(Action<T> action) {
return action.execute();
}
আপনি এটি পছন্দ করতে পারেন
String result = executeAction(new Action<String>() {
@Override
public String execute() {
//code here
return "Return me!";
}
});
বা, অকার্যকর কর্মের জন্য (মনে রাখবেন যে আপনি ফলাফলকে কোনও কিছুতে নির্ধারিত করছেন না)
executeAction(new VoidAction() {
@Override
public void executeInternal() {
//code here
}
});