Maison > Java > javaDidacticiel > le corps du texte

Comment instancier une classe en Java

PHPz
Libérer: 2023-04-18 11:07:04
avant
1632 Les gens l'ont consulté

En Java, il existe quatre façons d'instancier une classe :

1) Utilisez l'opérateur new

2) Appelez la méthode newInstance() de l'objet Class

3) Appelez la méthode clone() pour faire une copie de l'instance existante

4) Désérialisez la classe via la méthode readObject() de 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;       }   }
Copier après la connexion

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();       }   }
Copier après la connexion

3. Résultats de sortie

有参类的实例化   测试...01   无参类的实例化   测试...   测试...01   测试...01   -------------------额外测试--------------------   有参类的实例化   测试...05
Copier après la connexion

En plus de ces situations, vous peut instancier un Java En plus des objets de classe, l'instanciation d'appel implicite profite également de la situation centralisée ci-dessus. Par exemple, méthodes courantes :

public class ClassInstance{   public ClassInstance(){   }       public ClassInstance getInstance(){   return new ClassInstance();   }   }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal