El objecte és un element bàsic d'un OOPs llenguatge. En Java , no podem executar cap programa sense crear un objecte . Hi ha diverses maneres crear un objecte en Java que parlarem en aquest apartat, i també aprendrem com crear un objecte en Java.
Java ofereix cinc maneres de crear un objecte.
- Utilitzant nou Paraula clau
- Utilitzant clonar () mètode
- Utilitzant nova instància() mètode de la Classe classe
- Utilitzant nova instància() mètode de la Constructor classe
- Utilitzant Deserialització
S'està utilitzant la paraula clau nova
Utilitzant el nou La paraula clau és la forma més popular de crear un objecte o una instància de la classe. Quan creem una instància de la classe utilitzant la paraula clau new, assigna memòria (muntatge) per a la nova creació. objecte i també torna el referència d'aquest objecte a aquesta memòria. La paraula clau new també s'utilitza per crear una matriu. La sintaxi per crear un objecte és:
ClassName object = new ClassName();
Creem un programa que utilitzi la paraula clau nova per crear un objecte.
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(); } }
Sortida:
Welcome to javaTpoint
Utilitzant la paraula clau new, també podem invocar el constructor (per defecte o parametritzat) de la classe.
CreateObjectExample2.java
linux quin comanda
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(); } }
Sortida:
Welcome to javaTpoint
Utilitzant el mètode clone().
El clonar () mètode és el mètode de Objecte classe. Crea una còpia d'un objecte i retorna la mateixa còpia. El JVM crea un objecte nou quan s'invoca el mètode clone(). Copia tot el contingut de l'objecte creat anteriorment en un objecte nou. Tingueu en compte que no crida a cap constructor. Hem d'implementar el Clonable interfície mentre s'utilitza el mètode clone(). El mètode llança CloneNotSupportedException excepció si la classe de l'objecte no admet la interfície Cloneable. Les subclasses que anul·len el mètode clone() poden llançar una excepció si una instància no es pot clonar.
Nota: el mètode crea una còpia de l'objecte no un objecte nou.
Sintaxi:
protected Object clone() throws CloneNotSupportedException
Utilitzem la següent instrucció per crear un objecte nou.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
neu vs gel
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(); } } }
Sortida:
New Object Created
Utilitzant el mètode newInstance() de la classe Class
El nova instància() El mètode de la classe Class també s'utilitza per crear un objecte. Crida al constructor predeterminat per crear l'objecte. Retorna una instància de nova creació de la classe representada per l'objecte. Utilitza internament el mètode newInstance() de la classe Constructor.
Sintaxi:
public T newInstance() throws InstantiationException, IllegalAccessException
Llança el IllegalAccessException, InstantiationException, ExceptionInInitializerError excepcions.
Podem crear un objecte de les següents maneres:
ClassName object = ClassName.class.newInstance();
O
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
En la declaració anterior, forName() és un mètode estàtic de classe Class. Analitza un paràmetre className de tipus String. Retorna l'objecte de la classe amb el nom complet. Carrega la classe però no crea cap objecte. Es tira ClassNotFoundException si la classe no es pot carregar i LinkageError si falla l'enllaç.
Per crear l'objecte, fem servir el nova instància() mètode de la classe Class. Només funciona quan sabem el nom de la classe i la classe té un constructor públic per defecte.
Al programa següent, hem creat un objecte nou mitjançant el mètode 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(); } } }
Sortida:
A new object created.
Utilitzant el mètode newInstance() de la classe Constructor
És similar al nova instància() mètode de la Classe classe. Es coneix com una forma reflexiva de crear objectes. El mètode es defineix al Constructor classe que és la classe dejava.lang.reflectpaquet. També podem cridar al constructor parametritzat i al constructor privat mitjançant l' nova instància() mètode. És molt preferit en comparació amb el mètode newInstance() de la classe Class.
Sintaxi:
emet una cadena com int
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
El mètode analitza una matriu d'objectes com a argument. Els valors dels tipus primitius embolcallats en un embolcall Objecte del tipus adequat. Retorna un objecte nou creat cridant al constructor. Es tira IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError Excepcions .
Podem crear un objecte de la següent manera:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Creem un programa que creï un objecte utilitzant el mètode 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(); } } }
Sortida:
JavaTpoint
Ús de la deserialització
A Java, serialització és el procés de convertir un objecte en una seqüència de flux de bytes. S'anomena el procés invers (de flux de bytes a objecte) de la serialització deserialització . La JVM crea un objecte nou quan serialitzem o deserialitzem un objecte. No fa servir el constructor per crear un objecte. Mentre s'utilitza la deserialització, el Serialitzable interfície (interfície de marcador) s'ha d'implementar a la classe.
Serialització: El writeObject() mètode de la ObjectOutputStream La classe s'utilitza per serialitzar un objecte. Envia l'objecte al flux de sortida.
Sintaxi:
public final void writeObject(object x) throws IOException
Deserialització: El mètode readObject() de ObjectInputStream La classe s'utilitza per deserialitzar un objecte. Fa referència a objectes fora d'un flux.
com eliminar el primer caràcter en excel
Sintaxi:
public final Object readObject() throws IOException,ClassNotFoundException
Nota: Feu que l'arxivat sigui estàtic o transitori si no volem incloure un camp com a part de l'objecte. No s'inclourà en el procés de serialització.
Entenem la serialització i deserialització mitjançant 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; } }
Hem creat una classe anomenada Empleat l'objecte del qual s'ha de serialitzar i deserialitzar.
Serialització d'objectes Java:
Al programa següent, hem serialitzat un objecte de la classe Employee mitjançant l' writeObject() mètode de la classe ObjectOutputStream. L'estat de l'objecte es guarda al fitxer empleat.txt dossier.
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); } } }
Sortida:
Successfully Created
Deserialització d'objectes Java:
Al programa següent, deserialitzarem un objecte que hem serialitzat al programa anterior.
convertir cadena en interger
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); } } }
Sortida:
198054 Andrew
En els cinc mètodes anteriors, hem observat que el nou paraula clau i ambdues nova instància() Els mètodes utilitzen el constructor per crear objectes, mentre que els altres dos mètodes no utilitzen el constructor.