logo

Java의 new Operator 및 newInstance() 메소드

Java에서 new는 newInstance()가 객체 생성에 사용되는 메서드인 연산자입니다. 생성될 객체의 유형을 알고 있으면 new 연산자를 사용할 수 있지만 처음에 생성될 객체의 유형을 모르고 런타임에 전달되는 경우 newInstance() 메서드가 사용됩니다.
일반적으로 new 연산자는 객체를 생성하는 데 사용되지만 런타임에 생성될 객체 유형을 결정하려는 경우 new 연산자를 사용할 수 있는 방법이 없습니다. 이 경우 우리는 newInstance() 메서드 .

우리가 논의하자 새로운 운영자 .  Java에서 객체 생성은 나열된 3단계, 즉 객체 인스턴스화와 객체 초기화로 이루어집니다. 생성자 호출 .

Datatype   variable;   

new 키워드를 사용하면 컴파일러는 변수를 객체로 해석합니다.

Datatype   object   = new Constructor();

예:

Java
// Java Program to Illustrate new Operator // Importing required classes  import java.util.*; // Main class class GFG {  // Main drive method  public static void main(String[] args)  {  // List   al;  // Ny now al is just a variable  // Now creating object using new operator  List<Integer> al = new ArrayList<>();  // Adding elements to above List  al.add(1);  al.add(4);  al.add(3);  // Printing elements of List  System.out.print(al);  } } 

산출
[1 4 3]

메모: 변수가 아닌 객체를 호출하려는 경우에도 생성자와 함께 사용할 수 있습니다.

리눅스 폴더 이름 바꾸기

이제 Class 클래스 내부의 java.lang 패키지에 있는 newInstance() 메서드를 생각해 보겠습니다. 이미 논의한 것처럼 원격 소스에서 클래스를 로드하는 데 사용됩니다. 
나중에 실행을 위해 Java 프로그램을 사용하여 데이터베이스에 연결하는 시나리오를 생각해 보세요. 를 통해 더욱 명확하게 설명할 수 있다. JDBC 예. 거기서 우리가 사용한 것을 기억하세요. 클래스.for이름() 메소드를 사용하여 레지스터를 동적으로 로드했으며 그 위에 newInstance() 메소드를 사용하여 동적으로 객체를 생성했습니다.  

예:

Java
// Java Program to Demonstrate Working of newInstance() // Method present inside java.lang.Class // Class 1 // Class 2 class A {  int a; } class B {  int b; } // Class 3 // Main class public class GFG {  // Method 1  // To create an instance of class whose name is  // passed as a string 'c'.  public static void fun(String c)  throws InstantiationException  IllegalAccessException  ClassNotFoundException  {  // Creating an object of type 'c'  Object obj = Class.forName(c).newInstance();  // Printing the type of object created  System.out.println('Object created for class:'  + obj.getClass().getName());  }  // Method 2  // Main driver method  public static void main(String[] args)  throws InstantiationException  IllegalAccessException  ClassNotFoundException  {  // Calling above method over 'A'  fun('A');  } } 

산출:

Java의 new Operator 및 newInstance() 메소드

출력 설명: 이름() 방법 클래스 '를 반환합니다. 수업' 우리가 호출하는 객체 새로운 인스턴스() 명령줄 인수로 전달하는 해당 클래스의 개체를 반환하는 메서드입니다. 

  • 전달된 클래스가 존재하지 않는 경우 ClassNotFoundException 발생합니다. 
  • InstantionException전달된 클래스에 기본 생성자가 포함되어 있지 않으면 발생합니다. 새로운 인스턴스() 메소드는 내부적으로 특정 클래스의 기본 생성자를 호출합니다. 불법접근예외지정된 클래스 정의의 정의에 액세스할 수 없는 경우 발생합니다.

관련 기사: 자바에서의 리플렉션