首頁 > Java > java教程 > 主體

Java如何實例化類別

PHPz
發布: 2023-04-18 11:07:04
轉載
1633 人瀏覽過

Java中,類別的實例化方法有四種途徑:

1)使用new運算子

2)呼叫Class物件的newInstance()方法

3)呼叫clone()方法,對現有實例的拷貝

4)透過ObjectInputStream的readObject()方法反序列化類別

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;       }   }
登入後複製

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();       }   }
登入後複製

3.輸出結果

有参类的实例化   测试...01   无参类的实例化   测试...   测试...01   测试...01   -------------------额外测试--------------------   有参类的实例化   测试...05
登入後複製

除了這幾種情況可以實例化一個Java類別物件外,隱式呼叫實例化也是利用了已上集中情況。例如常見的方法:

public class ClassInstance{   public ClassInstance(){   }       public ClassInstance getInstance(){   return new ClassInstance();   }   }
登入後複製

以上是Java如何實例化類別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板