Java / Abstract Class
Can we mark a local inner class as abstract?
Yes.
public class OuterClass { public void instanceMethod(){ abstract class InnerClass{ } } }
Below is an example that illustrates the usage of local inner abstract class.
public class SendNotification { public enum NotifyBy { MESSAGE, EMAIL, PHONECALL } public Runnable createNotification(NotifyBy type) { abstract class ProtoType implements Runnable { public void run() { prepareContent(); sendNotification(); } abstract void sendNotification(); private void prepareContent() { // notification message content } } switch (type) { case EMAIL: { return new ProtoType() { void sendNotification() { System.out.println("Sent using email."); } }; } case MESSAGE: { return new ProtoType() { void sendNotification() { System.out.println("communicated by text message."); } }; } } return new ProtoType() { void sendNotification() { System.out.println("communicated by phone call."); } }; } public static void main(String[] args) { new Thread(new SendNotification().createNotification(NotifyBy.MESSAGE)).start(); ; } }
More Related questions...