Different ways of creating object in Java
1. Using new keyword
This is the most common way to create an object in java.In This we will be using the new operator which will allocates the memory space and initialize the field with default value. Then it executes the code inside the specified constructor which normally re-writes the default values with the value inside the constructor.
MyObject object new MyObject();
2. Using Class.forName()
If we know the name of the class & if it has a public default constructor we can create an object in this way.
MyObject object (MyObject) Class.forName( vinay.abc.MyObject ).newInstance();
vinay.abc.MyObject – is the class name
3. Using clone()
The clone() can be used to create a copy of an existing object. Object.clone() is a native method which translates into instructions for allocating the memory and copying the data.Even if you override the clone method then also you need to call the super.clone() method inside the overridden clone method. In this method a copy instruction is called and which copy the data from original object to clone object.
MyObject anotherObject new MyObject();
MyObject object anotherObject.clone();
4. Using object deserialization
Object deserialization is nothing but creating an object from its serialized form. It will uses the ‘new’ operator internally and always calls the default constructor.
ObjectInputStream inStream new ObjectInputStream(anInputStream ); MyObject object (MyObject) inStream.readObject();
5. Using class loader
one more is through creation of object using classloader
like
this.getClass().getClassLoader().loadClass( com.amar.myobject ).newInstance();Read more post on
Comments
I think java object it’s very interested for newbe. thanks
Not one of those examples will compile. Interesting and informative topic, but syntax is important!
What about using Reflection API ? It is still common approach
2 and 5 above are same.
this.getClass().getClassLoader().loadClass( com.amar.myobject ).newInstance();
is same as
Class.forName(com.amar.myobject)
And important point about clone() method is that, it would only work for those classes which implement the Cloneable interface.
Both Class.forName() and getClassLoader().loadClass() take strings as parameters.
Adding new way of creating through factories.
Full details in -http://www.javaworld.com/javaworld/javaqa/2001-05/02-qa-0511-factory.html
Other uses you may think of is with DocumentBuilderFactory when working with XML in Java. A factory helps to hide implementation details from public interfaces and support polymorphism as you only need to know the kinds of behaviours that the object created by the factory adheres to and not how the factory creates it.
Trackbacks