How to create an array of objects in Java
In this article, we will show how to create an array of objects in Java.
1. Introduction
Everything in Java is associated with classes and objects, along with its attributes and methods. A Class is like an object constructor or a “blueprint” for creating objects. A typical Java program creates many objects, which as you know, interact by invoking methods. Through these object interactions, a program can carry out various tasks. Once an object has completed the work for which it was created, its resources are recycled for use by other objects.
2. Creating objects
In this section we will see different ways of creating a Java object.
2.1 new operator
The most common way to create a Java is to use the new
operator.
SpecialClass object1 = new SpecialClass();
2.2 newInstance()
Another way of creating the Java object is to use the newInstance()
method of the Class
class:
SpecialClass object2 = SpecialClass.class.newInstance();
Please note that this way of creating the objected has been deprecated since Java 9. This method propagates any exception thrown by the nullary constructor, including a checked exception. The use of this method effectively bypasses the compile-time exception checking that would otherwise be performed by the compiler. This call can be replaced with clazz.getDeclaredConstructor().newInstance()
. The latter sequence of calls is inferred to be able to throw the additional exception types InvocationTargetException
, NoSuchMethodException
. Both of these exception types are subclasses of ReflectiveOperationException
.
2.3 clone
Now let us look at another way of creating a java object. We can use the clone()
method of the object class. This creates and returns a copy of the object on which this is called. The method clone
for class Object
performs a specific cloning operation. First, if the class of this object does not implement the interface Cloneable
, then a CloneNotSupportedException
is thrown. Note that all arrays are considered to implement the interface Cloneable
and that the return type of the clone method of an array type T[]
is T[]
where T
is any reference or primitive type.
This method performs a “shallow copy” of this object, not a “deep copy” operation. The class Object
does not itself implement the interface Cloneable
, so calling the clone
method on an object whose class is Object
will result in throwing an exception at run time.
final Object object4 = object1.clone();
2.4 De/Serialization
The readObject()
method of ObjectInputStream
class can be used to create objects.
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("filename")); SpecialClass object5 = (SpecialClass) objectInputStream.readObject();
An ObjectInputStream
deserializes primitive data and objects previously written using an ObjectOutputStream
. ObjectOutputStream
and ObjectInputStream
can provide an application with persistent storage for graphs of objects when used with a FileOutputStream
and FileInputStream
respectively. ObjectInputStream
is used to recover those objects previously serialized. Other uses include passing objects between hosts using a socket stream or for marshaling and unmarshaling arguments and parameters in a remote communication system.
3. Array
Arrays in Java are used to store multiple values in a single variable instead of declaring separate variables for each value. There are two ways of declaring an array:
String[] str1; String str2[];
An array declaration has two components: the type and the name. Type declares the element type of the array. The element type determines the data type of each element that comprises the array.
When an array is declared only a reference is created. To create and give memory to an array we need to instantiate it. We can make use of the new
operator to do that.
arrVariable = new arrayType[]
arrayType refers to the type of array (e.g. String, int etc), size refers to the size of the array. The elements in the array allocated by new
will automatically be initialized to zero (for numeric types), false (for boolean), or null (for reference types)
We can also use a shortcut syntax to create and initialize an array:
int[] arr = {40, 2, 300};
We can also declare array of arrays also known as multi-dimensional arrays by using two or more sets of brackets. e.g. int[][] arr
.
4. Array of objects in Java
In this section, we will see how to create an array of objects in Java. The syntax to create and initialize an array of the object is as below:
ClassName[] objectName = new ClassName[];
Example: To create an array of objects of class SpecialClass you can use the below syntax:
SpecialClass[] objects = new SpecialClass[3];
To access the class elements you will need to provide the index and calls the method/variable – objects[<index>].classMethod
5. Summary
In this article, we showed how to create an array of objects in Java. Then we discussed what arrays are and how to create and initialize them. In the end, we discussed how to create an array of objects in Java.