Anonymous object in Java

Anonymous object in Java means creating an object without any reference variable. Generally, when creating an object in Java, you need to assign a name to the object. But the anonymous object in Java allows you to create an object without any name assigned to that object.

So, if you want to create only one object in a class, then the anonymous object would be a good approach. Reading this article, you will learn what an anonymous object is and how to create and use anonymous objects in Java.

Let's get started!

Anonymous Object in Java

Anonymous means Nameless. An anonymous object is basically a value that has been created but has no name.

Since they have no name, there?s no other way to refer to them beyond the point where they are created. Consequently, they have "expression scope," meaning they are created, evaluated, and destroyed everything within a single expression.

However, an anonymous object is considered useful when you want to create an object not more than once in your program.

Here is the syntax to create an anonymous object in Java.

Syntax

new Class_name();

Example

new Student();

Here?s how we can pass the parameter to the constructor ?

new Student("Jose");

If you wish to call a method through the anonymous object, here?s how the code is written ?

new Student().display();

This is a way how you can pass the parameter to the calling method ?

new Student().display("Jose", 15);

Here?s a program that illustrates the above concept ?

<div class="execute"></div><div class="code-mirror  language-java" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Addition </span><span class="token punctuation">{</span>
   <span class="token comment">// Declaring the instance variables.</span>
   <span class="token keyword">int</span> a<span class="token punctuation">;</span>
   <span class="token keyword">int</span> b<span class="token punctuation">;</span>
   <span class="token keyword">int</span> c<span class="token punctuation">;</span>
   <span class="token keyword">int</span> d<span class="token punctuation">;</span>
      
   <span class="token comment">// Declaring the parameterize constructor and initializing the parameters.</span>
   <span class="token class-name">Addition</span><span class="token punctuation">(</span><span class="token keyword">int</span> p<span class="token punctuation">,</span> <span class="token keyword">int</span> q<span class="token punctuation">) </span><span class="token punctuation">{</span>
      a <span class="token operator">=</span> p<span class="token punctuation">;</span>
      b <span class="token operator">=</span> q<span class="token punctuation">;</span>
      <span class="token keyword">int</span> ab <span class="token operator">=</span> a <span class="token operator">+</span> b<span class="token punctuation">;</span>
      <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"Addition of a and b:"</span> <span class="token operator">+</span>ab<span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
      
   <span class="token comment">// Declaring an instance method and initializing parameters.</span>
   <span class="token keyword">void</span> <span class="token function">addition</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">,</span> <span class="token keyword">int</span> y <span class="token punctuation">) </span><span class="token punctuation">{</span>
      c <span class="token operator">=</span> x<span class="token punctuation">;</span>
      d <span class="token operator">=</span> y<span class="token punctuation">;</span>
      <span class="token keyword">int</span> cd <span class="token operator">=</span> c <span class="token operator">+</span> d<span class="token punctuation">;</span>
      <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"addition of c and d:"</span> <span class="token operator">+</span>cd<span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">) </span><span class="token punctuation">{</span>

      <span class="token comment">// Creating an anonymous object and passing the values to the constructor and calling method.</span>
      <span class="token keyword">new</span> A<span class="token function">ddition</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">addition</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
         
      <span class="token comment">// We are also allowed to pass the different values with the same anonymous object. // but we should not create another new anonymous object.</span>
      <span class="token keyword">new</span> <span class="token function">Addition</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">addition</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">15</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>

Output

Addition of a and b: 4
Addition of c and d: 6
Addition of a and b: 14
Addition of c and d: 20

Example

Here?s another program where we will create an anonymous object and calculate the area and perimeter of the square by passing different values to the constructor and method.

<div class="execute"></div><div class="code-mirror  language-java" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">package</span> <span class="token namespace">anonymousObject</span><span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Calculation </span><span class="token punctuation">{</span>
   <span class="token comment">// Declare instance variable.</span>
   <span class="token keyword">int</span> a<span class="token punctuation">;</span>

   <span class="token comment">// Declaration of one parameter constructor.</span>
   <span class="token class-name">Calculation</span><span class="token punctuation">(</span><span class="token keyword">int</span> p<span class="token punctuation">) </span><span class="token punctuation">{</span>
      a <span class="token operator">=</span> p<span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   <span class="token comment">// Declaration of instance methods.</span>
   <span class="token keyword">void</span> <span class="token function">area</span><span class="token punctuation">(</span><span class="token punctuation">) </span><span class="token punctuation">{</span>
      <span class="token keyword">int</span> area <span class="token operator">=</span> a <span class="token operator">*</span> a<span class="token punctuation">;</span>
      <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"Area of square: "</span> <span class="token operator">+</span>area<span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   <span class="token keyword">void</span> <span class="token function">perimeter</span><span class="token punctuation">(</span><span class="token keyword">int</span> b<span class="token punctuation">) </span><span class="token punctuation">{</span>
      <span class="token keyword">int</span> peri <span class="token operator">=</span> <span class="token number">4</span> <span class="token operator">*</span> b<span class="token punctuation">;</span>
      <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"Perimeter of square: "</span> <span class="token operator">+</span>peri<span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">) </span> <span class="token punctuation">{</span>

      <span class="token comment">// Create an anonymous object.</span>
      <span class="token keyword">new</span> <span class="token class-name">Calculation</span><span class="token punctuation">(</span><span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">area</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token keyword">new</span> <span class="token class-name">Calculation</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">perimeter</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token keyword">new</span> <span class="token class-name">Calculation</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">area</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token keyword">new</span> <span class="token class-name">Calculation</span><span class="token punctuation">(</span><span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">perimeter</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>

Output

Area of square: 2500
Perimeter of square: 400
Area of square: 400
Perimeter of square: 800

How to create and use Anonymous Object in Java ?

The following program shows how you can use anonymous objects to call on their methods ?

<div class="code-mirror  language-java" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">class</span> <span class="token class-name">Person</span> <span class="token punctuation">{</span>
   <span class="token keyword">void</span> <span class="token function">call</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"Hello, "</span> <span class="token operator">+</span> name <span class="token operator">+</span> <span class="token string">"!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   <span class="token keyword">int</span> <span class="token function">sum</span><span class="token punctuation">(</span><span class="token keyword">int</span> x<span class="token punctuation">,</span> <span class="token keyword">int</span> y<span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">return</span> x <span class="token operator">+</span> y<span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">new</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span><span class="token string">"Jose"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Hello, Jose!</span>
<span class="token keyword">int</span> calculation <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">sum</span><span class="token punctuation">(</span><span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">31</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>calculation<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 38</span>
</div>

Due to Java 10, you can create and save an anonymous object during instantiation by storing the instance with the var keyword.

In the below program, you can see how a new Object is created and referenced from the myObj reference variable ?

<div class="code-mirror  language-java" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">boolean</span> result <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> myObj <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
   <span class="token keyword">void</span> <span class="token function">greetings</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"Hello World!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   <span class="token keyword">boolean</span> success <span class="token operator">=</span> result<span class="token punctuation">;</span> 
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>myObj<span class="token punctuation">.</span>success<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// true</span>
myObj<span class="token punctuation">.</span><span class="token function">greetings</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Hello World!</span>
</div>

Depending on the surrounding context, the var keyword in Java 10 will infer the type of the variable.

Inside the new Object() body, you can also define variables and methods that the object instance will hold. Following, you can call and use the instance variables and methods simply like a normal object.

Wrapping up

From the above discussion, we hope now you?re well aware of what anonymous object in Java is and how to create and use them. Additionally, you would also be understood that by using an Anonymous object in Java, you can write less code and create only one object in a class. More importantly, you don?t want to write unused code, and you also prevent code from being used outside of the required scope.

If you like reading this article and you find it useful, give us a thumbs up that would inspire us to give you more useful technical stuff.

Updated on: 2022-08-25T10:00:49+05:30

15K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements