Heim > Java > javaLernprogramm > So instanziieren Sie eine Klasse in Java

So instanziieren Sie eine Klasse in Java

PHPz
Freigeben: 2023-04-18 11:07:04
nach vorne
1660 Leute haben es durchsucht

In Java gibt es vier Möglichkeiten, eine Klasse zu instanziieren:

1) Verwenden Sie den neuen Operator

2) Rufen Sie die newInstance()-Methode des Klassenobjekts auf

3) Rufen Sie die clone()-Methode auf, um eine Kopie davon zu erstellen die vorhandene Instanz

4) Deserialisieren Sie die Klasse über die readObject()-Methode von ObjectInputStream

1.ClassInstance.java

import java.io.*;      class ClassInstance implements Cloneable, Serializable {       private String str = "测试...";       public void fun(){           System.out.println(str);       }       public ClassInstance(String str){           System.out.println("有参类的实例化");           this.str += str;        }       public ClassInstance(){           System.out.println("无参类的实例化");       }       public Object clone(){           return this;       }   }
Nach dem Login kopieren

2.ClassInstanceTest.java

import java.io.*;   import java.lang.reflect.*;      public class ClassInstanceTest{       public static void main(String[] args) throws ClassNotFoundException, InstantiationException,              IllegalAccessException, IOException,InvocationTargetException, NoSuchMethodException{           //***种类的实例化方式           ClassInstance ci01 = new ClassInstance("01");           ci01.fun();              //第二种类的实例化方式           ClassInstance ci02 = (ClassInstance) Class.forName("ClassInstance").newInstance();           ci02.fun();              //第三种类的实例化方式           ClassInstance ci03 = (ClassInstance) ci01.clone();           ci03.fun();              //第四种类的实例化方式           FileOutputStream fos = new FileOutputStream("ci.tmp");           ObjectOutputStream oos = new ObjectOutputStream(fos);           oos.writeObject(ci01);           oos.close();           fos.close();                      FileInputStream fis = new FileInputStream("ci.tmp");           ObjectInputStream ois = new ObjectInputStream(fis);                      ClassInstance ci04  = (ClassInstance) ois.readObject();           ois.close();           fis.close();                      ci04.fun();           System.out.println("--------------------额外测试--------------------");           ClassInstance ci05 = null;           //额外的思考 在第二种类实例化的方式中有没有一种方法实现有参数的构造方式           //获得类的构造信息           Constructor[] ctor = Class.forName("ClassInstance").getDeclaredConstructors();           //找到我们需要的构造方法           for(int i=0;i<ctor.length;i++ ){               Class[] cl = ctor[i].getParameterTypes();               if(cl.length == 1){                   //实例化对象                   ci05 = (ClassInstance) Class.forName("ClassInstance").getConstructor(cl).newInstance(new Object[]{"05"});               }           }           ci05.fun();       }   }
Nach dem Login kopieren

3. Ergebnisse ausgeben

有参类的实例化   测试...01   无参类的实例化   测试...   测试...01   测试...01   -------------------额外测试--------------------   有参类的实例化   测试...05
Nach dem Login kopieren

Zusätzlich zu diesen Situationen kann ein Java instanziieren Neben Klassenobjekten nutzt die implizite Aufrufinstanziierung auch die oben beschriebene zentralisierte Situation. Gängige Methoden sind zum Beispiel:

public class ClassInstance{   public ClassInstance(){   }       public ClassInstance getInstance(){   return new ClassInstance();   }   }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo instanziieren Sie eine Klasse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage