머리말
Java 개발자로서 우리는 매일 많은 수의 객체를 만듭니다. 그러나 우리는 항상 스프링 프레임 워크와 같은 관리 의존성 시스템을 사용하여 이러한 객체를 만듭니다. 실제로 객체를 만들 수있는 다른 방법이 있습니다. 다음 기사에서 자세히 소개합니다.
1. 새 키워드를 사용하십시오
이것은 객체를 만드는 가장 일반적인 방법이며 매우 간단합니다. 이 방법을 사용하면 호출 해야하는 생성자를 호출 할 수 있습니다.
직원 EMP1 = 새로운 직원 (); 0 : New #19 // 클래스 org/프로그래밍/mitra/연습/직원 3 : DUP 4 : inkokescial #21 // 방법 org/programming/mitra/연습/직원. ":() V
2. 클래스 클래스의 Newinstance 방법을 사용하십시오
또한 클래스 클래스의 NewInstance 메소드를 사용하여 개체를 만들 수 있습니다. 이 Newinstance 메소드는 매개 변수가없는 생성자를 호출하여 객체를 생성합니다.
NewInstance ()를 사용하여 다음과 같은 방식으로 객체를 만들 수 있습니다.
Employee emp2 = (Employee) class.forname ( "org.programming.mitpra.exercises.employee"). NewInstance ();
또는
Employee emp2 = Employee.class.newinstance (); 51 : invokeVirtual #70 // 메소드 Java/lang/class.newinstance :() ljava/lang/object;
3. 생성자 클래스의 Newinstance 메소드를 사용하십시오
클래스 클래스를 사용하는 newInstance 메소드와 유사하게 java.lang.reflect.Constructor 클래스에는 객체를 만드는 데 사용할 수있는 newInstance() 함수 메소드가 있습니다. 이 newInstance 방법을 사용하면 매개 변수화 된 생성자 및 개인 생성자를 호출 할 수도 있습니다.
생성자 <Employee> constructor = Employee.class.getConstructor (); Employee emp3 = constructor.newinstance (); 111 : invokeVirtual #80 // 메소드 java/lang/reflect/c습니다.
이러한 newInstance() 메소드는 객체를 생성하는 반사 수단으로 간주됩니다. 실제로 내부 클래스의 newInstance() 메소드는 생성자 클래스의 newInstance() 메소드를 사용합니다. 그렇기 때문에 후자가 선호되고 Spring, Hibernate, Struts 등과 같은 다른 프레임 워크를 사용하는 이유입니다.
4. 복제 방법을 사용하십시오
실제로, 우리가 clone 방법을 호출 할 때마다 Java Virtual Machine은 우리를 위해 새로운 객체를 생성하고 이전 객체의 내용을이 새로운 객체에 복사합니다. clone 방법을 사용하여 객체를 작성해도 생성자를 호출하지 않습니다.
객체에서 clone() 메소드를 사용하려면 클로닝 가능한 유형을 구현하고 클론 방법을 정의해야합니다.
Employee EMP4 = (Employee) empl.clone (); 162 : invokevirtual #87 // 메소드 org/programming/mitra/연습/Employee.clone () ljava/lang/object;
5. 사막화를 사용하십시오
우리가 객체를 직렬화하고 사형화 할 때마다 Java Virtual Machine은 우리를 위해 별도의 객체를 만듭니다. 사제화에서 Java Virtual Machine은 생성자를 사용하여 객체를 생성하지 않습니다.
객체를 직렬화하려면 클래스에서 직렬화 가능한 인터페이스를 구현해야합니다.
ObjectInputStream in = new ObjectInputStream (new fileInputStream ( "data.Obj")); Employee emp5 = (Employee) in.readObject (); 261 : invokeVirtual #118 // 메소드 java/io/객체 인물 스트림. ReadObject :() ljava/lang/object;
위의 바이트 코드 스 니펫에서 볼 수 있듯이 첫 번째 코드 스 니펫은 새로운 기능과 invokespecial 명령으로 변환되는 것을 제외하고는 4 가지 방법이 모두 호출되어 invokevirtual 로 변환됩니다.
예
객체를 만들 준비가 된 Employee 클래스를 살펴 보겠습니다.
클래스 직원은 복제 가능, 직렬화 가능한 {개인 정적 최종 긴 SerialversionUID = 1L을 구현합니다. 개인 문자열 이름; 공공 직원 () {System.out.println ( "직원 생성자 호출 ..."); } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } @override public int hashcode () {Final int prime = 31; int result = 1; result = prime * result + ((name == null)? 0 : name.hashcode ()); 반환 결과; } @override public boolean equals (Object obj) {if (this == obj) return true; if (obj == null) false를 반환합니다. if (getClass ()! = obj.getClass ()) false를 반환합니다. 직원 기타 = (직원) obj; if (name == null) {if (other.name! = null) false를 반환합니다. } else if (! name.equals (기타 .name)) false를 반환합니다. 진실을 반환하십시오. } @override public String toString () {return "Employee [name =" + name + "]; } @override public Object Clone () {object obj = null; try {obj = super.clone (); } catch (clonenotsupportedException e) {e.printstacktrace (); } return obj; }} 다음 Java 프로그램에서는 Employee 객체를 만드는 5 가지 방법을 사용합니다.
public class objectCreation {public static void main (string ... args)은 예외를 던졌습니다. {// 새 키워드 직원 EMP1 = new Employee (); emp1.setName ( "NARESH"); System.out.println (emp1 + ", 해시 코드 :" + emp1.hashcode ()); // 클래스 클래스의 newInstance () 메소드 직원 EMP2 = (Employee) class.forname ( "org.programming.mitra.exercises.employee") .newinstance (); // 또는 단순히이 작업을 수행 할 수 있습니다. emp2.setName ( "Rishi"); System.out.println (emp2 + ", 해시 코드 :" + emp2.hashcode ()); // 생성자 클래스의 NewInstance () 메소드 생성자 <Eccipeee> 생성자 = Employee.class.getConstructor (); 직원 EMP3 = Constructor.NewInstance (); emps3.setName ( "Yogesh"); System.out.println (emp3 + ", 해시 코드 :" + empt3.hashcode ()); // clone () 메소드 직원 EMP4 = (Employee) empl3.clone (); empt4.setName ( "atul"); System.out.println (Emp4 + ", Hashcode :" + empt4.hashcode ()); // deserialization을 사용하여 // Serialization ObjectOutputStream out = new ObjectOutputStream (새 FileOutputStream ( "data.Obj")); out.writeObject (emp4); out.close (); // deserialization objectInputStream in = new ObjectInputStream (new FileInputStream ( "data.obj")); Employee emp5 = (직원) in.readobject (); 넣다(); emp5.setName ( "Akash"); System.out.println (Emp5 + ", 해시 코드 :" + emp5.hashcode ()); }}이 프로그램의 출력 결과는 다음과 같습니다.
직원 생성자라는 ... 직원 [name = naresh], 해시 코드 : -1968815046은 직원 [name = rishi], Hashcode : 78970652employee 생성자라고 불렀습니다. 2051657Employee [name = akash], 해시 코드 : 63313419
위의 내용은 Java에서 객체를 만드는 약 5 가지 방법입니다. 자바를 배우는 것이 도움이되기를 바랍니다. Wulin.com을 지원 해주셔서 감사합니다.