>Java >java지도 시간 >Java에서 클래스를 인스턴스화하는 방법

Java에서 클래스를 인스턴스화하는 방법

PHPz
PHPz앞으로
2023-04-18 11:07:041666검색

Java에서는 클래스를 인스턴스화하는 네 가지 방법이 있습니다.

1) new 연산자 사용

2) Class 객체의 newInstance() 메서드 호출

3) clone() 메서드를 호출하여 복사본 만들기 기존 인스턴스

4) 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;       }   }

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의 readObject() 메서드를 통해 클래스를 역직렬화합니다. 3. 이러한 상황 외에도 Java를 인스턴스화할 수 있습니다. 클래스 객체 외에도 암시적 호출 인스턴스화는 위의 중앙 집중식 상황을 활용합니다. 예를 들어 일반적인 방법은 다음과 같습니다.

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

위 내용은 Java에서 클래스를 인스턴스화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제