logo

Cómo crear objetos en Java

El objeto es un componente básico de una Ups idioma. En Java , no podemos ejecutar ningún programa sin crear un objeto . Hay varias maneras de crear un objeto en java que discutiremos en esta sección, y también aprenderemos cómo crear un objeto en Java.

Java proporciona cinco formas de crear un objeto.

  • Usando nuevo Palabra clave
  • Usando clon() método
  • Usando nueva instancia() método de la Clase clase
  • Usando nueva instancia() método de la Constructor clase
  • Usando Deserialización

Usando nueva palabra clave

Utilizando el nuevo La palabra clave es la forma más popular de crear un objeto o instancia de la clase. Cuando creamos una instancia de la clase usando la palabra clave new, asigna memoria (montón) para la clase recién creada. objeto y también devuelve el referencia de ese objeto a esa memoria. La nueva palabra clave también se utiliza para crear una matriz. La sintaxis para crear un objeto es:

 ClassName object = new ClassName(); 

Creemos un programa que use una nueva palabra clave para crear un objeto.

CreateObjectExample1.java

 public class CreateObjectExample1 { void show() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample1 obj = new CreateObjectExample1(); //invoking method using the object obj.show(); } } 

Producción:

 Welcome to javaTpoint 

Al usar la nueva palabra clave, también podemos invocar el constructor (predeterminado o parametrizado) de la clase.

CreateObjectExample2.java

casos de prueba junit
 public class CreateObjectExample2 { //constructor of the class CreateObjectExample2() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample2 obj = new CreateObjectExample2(); } } 

Producción:

 Welcome to javaTpoint 

Usando el método clon()

El clon() método es el método de Objeto clase. Crea una copia de un objeto y devuelve la misma copia. El JVM Crea un nuevo objeto cuando se invoca el método clone(). Copia todo el contenido del objeto creado previamente en un objeto nuevo. Tenga en cuenta que no llama a ningún constructor. Debemos implementar la Clonable interfaz mientras se utiliza el método clone(). El método arroja ClonNotSupportedException excepción si la clase del objeto no admite la interfaz Cloneable. Las subclases que anulan el método clone() pueden generar una excepción si no se puede clonar una instancia.

Nota: El método crea una copia del objeto, no un objeto nuevo.

Sintaxis:

 protected Object clone() throws CloneNotSupportedException 

Usamos la siguiente declaración para crear un nuevo objeto.

 ClassName newobject = (ClassName) oldobject.clone(); 

CreateObjectExample3.java

cuantas ciudades hay en nosotros
 public class CreateObjectExample3 implements Cloneable { @Override protected Object clone() throws CloneNotSupportedException { //invokes the clone() method of the super class return super.clone(); } String str = 'New Object Created'; public static void main(String[] args) { //creating an object of the class CreateObjectExample3 obj1 = new CreateObjectExample3(); //try catch block to catch the exception thrown by the method try { //creating a new object of the obj1 suing the clone() method CreateObjectExample3 obj2 = (CreateObjectExample3) obj1.clone(); System.out.println(obj2.str); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } } 

Producción:

 New Object Created 

Usando el método newInstance() de la clase Class

El nueva instancia() El método de la clase Class también se utiliza para crear un objeto. Llama al constructor predeterminado para crear el objeto. Devuelve una instancia recién creada de la clase representada por el objeto. Utiliza internamente el método newInstance() de la clase Constructor.

Sintaxis:

 public T newInstance() throws InstantiationException, IllegalAccessException 

arroja el excepción de acceso ilegal, InstantiationException, ExceptionInInitializerError excepciones.

Podemos crear un objeto de las siguientes maneras:

 ClassName object = ClassName.class.newInstance(); 

O

 ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance(); 

En la declaración anterior, paraNombre() es un método estático de la clase Class. Analiza un parámetro nombre de la clase de tipo Cadena. Devuelve el objeto de la clase con el nombre completo. Carga la clase pero no crea ningún objeto. arroja Excepción de clase no encontrada si la clase no se puede cargar y Error de vinculación si el enlace falla.

Para crear el objeto utilizamos el nueva instancia() método de la clase Class. Funciona sólo cuando conocemos el nombre de la clase y la clase tiene un constructor público predeterminado.

En el siguiente programa, creamos un nuevo objeto usando el método newInstance().

CreateObjectExample4.java

 public class CreateObjectExample4 { void show() { System.out.println('A new object created.'); } public static void main(String[] args) { try { //creating an instance of Class class Class cls = Class.forName('CreateObjectExample4'); //creates an instance of the class using the newInstance() method CreateObjectExample4 obj = (CreateObjectExample4) cls.newInstance(); //invoking the show() method obj.show(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } 

Producción:

cadena del convertidor hasta la fecha
 A new object created. 

Usando el método newInstance() de la clase Constructor

Es similar al nueva instancia() método de la Clase clase. Se conoce como una forma reflexiva de crear objetos. El método está definido en el Constructor clase que es la clase dejava.lang.reflectpaquete. También podemos llamar al constructor parametrizado y al constructor privado usando el nueva instancia() método. Es ampliamente preferido en comparación con el método newInstance() de la clase Class.

Sintaxis:

 public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException 

El método analiza una matriz de objetos como argumento. Los valores de los tipos primitivos envueltos en un objeto contenedor del tipo apropiado. Devuelve un nuevo objeto creado llamando al constructor. arroja Excepciones IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError .

Podemos crear un objeto de la siguiente manera:

 Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance(); 

Creemos un programa que cree un objeto usando el método newInstance().

CreateObjectExample5.java

 import java.lang.reflect.*; public class CreateObjectExample5 { private String str; CreateObjectExample5() { } public void setName(String str) { this.str = str; } public static void main(String[] args) { try { Constructor constructor = CreateObjectExample5.class.getDeclaredConstructor(); CreateObjectExample5 r = constructor.newInstance(); r.setName('JavaTpoint'); System.out.println(r.str); } catch (Exception e) { e.printStackTrace(); } } } 

Producción:

 JavaTpoint 

Usando deserialización

En Java, publicación por entregas es el proceso de convertir un objeto en una secuencia de flujo de bytes. El proceso inverso (flujo de bytes a objeto) de serialización se llama deserialización . La JVM crea un nuevo objeto cuando serializamos o deserializamos un objeto. No utiliza constructor para crear un objeto. Al utilizar la deserialización, el Serializable La interfaz (interfaz de marcador) debe implementarse en la clase.

Cómo crear objetos en Java

Publicación por entregas: El escribirObjeto() método de la flujo de salida de objetos La clase se utiliza para serializar un objeto. Envía el objeto al flujo de salida.

Sintaxis:

cadena.valor de java
 public final void writeObject(object x) throws IOException 

Deserialización: El método leerObjeto() de flujo de entrada de objetos La clase se utiliza para deserializar un objeto. Hace referencia a objetos fuera de una secuencia.

Sintaxis:

 public final Object readObject() throws IOException,ClassNotFoundException 

Nota: Haga que el archivo sea estático o transitorio si no queremos incluir un campo como parte del objeto. No se incluirá en el proceso de serialización.

Entendamos la serialización y deserialización a través de un programa.

Employee.java

 import java.io.Serializable; public class Employee implements Serializable { int empid; String empname; public Empoyee(int empid, String empname) { this.empid = empid; this.empname = empname; } } 

Hemos creado una clase llamada Empleado cuyo objeto se va a serializar y deserializar.

Serialización de objetos Java:

En el siguiente programa, hemos serializado un objeto de la clase Empleado usando el escribirObjeto() método de la clase ObjectOutputStream. El estado del objeto se guarda en el empleado.txt archivo.

SerializationExample.java

 import java.io.*; class SerializationExample { public static void main(String args[]) { Try { //Creating the object Employee emp = new Employee(198054,'Andrew'); //Creates a stream and writes the object FileOutputStream fout=new FileOutputStream('employee.txt'); ObjectOutputStream out=new ObjectOutputStream(employeeout); out.writeObject(emp); out.flush(); //closes the output stream out.close(); System.out.println('Successfully Created'); } catch(Exception e) { System.out.println(e); } } } 

Producción:

herencia en c++
 Successfully Created 

Deserialización de objetos Java:

En el siguiente programa, deserializaremos un objeto que hemos serializado en el programa anterior.

DeserializationExample.java

 import java.io.*; class DeserializationExample { public static void main(String args[]) { try { //Creating a stream to read the object ObjectInputStream in=new ObjectInputStream(new FileInputStream('employee.txt')); Employee e=(Employee)in.readObject(); //prints the data of the serialized object System.out.println(e.empid+' '+e.empname); //closing the input stream in.close(); } catch(Exception e) { System.out.println(e); } } } 

Producción:

 198054 Andrew 

En los cinco métodos anteriores, hemos notado que el nuevo palabra clave y ambos nueva instancia() Los métodos usan el constructor para crear objetos, mientras que los dos métodos restantes no usan el constructor.