Nested interfaces facts:
While declaring nested interfaces in classes is useful and can help maintain a clean design, other constructs like classes nested in interfaces and interfaces nested in interfaces are of little benefit and seem outright weird and even dangerous.
Syntax of nested interface which is declared within the interface
interface interface_name{ ... interface nested_interface_name{ ... } }
Syntax of nested interface which is declared within the class
class class_name{ ... interface nested_interface_name{ ... } }
Example of nested interface which is declared within the interface
interface Designable{ void design(); interface Message{ void dispaly(); } } class NestedDemo implements Designable.Message{ public void dispaly(){ System.out.println("Hello nested interface at Dinesh on Java"); } public static void main(String args[]){ Designable.Message message = new NestedDemo();//upcasting here message.dispaly(); } }
output:
As you can see in the above example, we are accessing the Message interface by its outer interface Designable because it cannot be accessed directly. It is just like Almira inside the room, we cannot access the Almira directly because we must enter the room first. In collection framework, sun micro-system has provided a nested interface Entry. Entry is the sub interface of Map i.e. accessed by Map.Entry.
After compiling we get the following class files
Internal code generated by the java compiler for nested interface Message
The java compiler internally creates public and static interface as displayed below:
public static interface Designable$Message { public abstract void dispaly(); }
Example of nested interface which is declared within the class
Let’s see how can we define an interface inside the class and how can we access it.
class Design{ interface Message{ void dispaly(); } } class NestedDemo implements Design.Message{ public void dispaly(){ System.out.println("Hello nested interface at Dinesh on Java"); } public static void main(String args[]){ Design.Message message = new NestedDemo();//upcasting here message.dispaly(); } }
output:
After compiling we get the following class files
define a class inside the interface
If we define a class inside the interface, java compiler creates a static nested class. Let’s see how can we define a class within the interface:
interface INT{ class Demo{} }
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…