Prev Next

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...

Show more question and Answers...


Comments & Discussions