Java에서 void와 Void의 차이

Mehvish Ashiq 2023년10월12일
  1. Java에서 voidVoid의 차이점
  2. Java에서 voidVoid 사용
Java에서 void와 Void의 차이

java.lang.Void 유형은 java.lang.Integer와 유사합니다. Voidvoid를 둘러싸고 개체 클래스를 확장하며 void에는 가능한 값이 없으므로 java.lang.Void를 인스턴스화할 수 없습니다.

우리는 Java 프로그래밍에서 Voidvoid의 차이점을 찾고 이해하는 것을 목표로 합니다. 또한 Java 프로그래밍에서 Void 또는 void를 사용하는 방법과 위치를 배웁니다.

Java에서 voidVoid의 차이점

둘(Void & void)의 기본적인 차이점은 void는 기본 유형이고 VoidObject에서 상속되는 참조 유형이라는 것입니다. 둘 중 어느 것도 가능한 값을 갖지는 않지만 둘 다 유형이 다릅니다.

void(모두 소문자)는 값의 부재를 나타내는 데 사용되는 부적절한 유형입니다. 표시 가능한 값이 없기 때문에 void는 함수나 메서드에서 값을 반환하지 않음을 의미합니다.

반면에 java.lang.Void는 객체를 반환하고, 합법적으로 작업을 수행하기 위해 null을 반환할 수 있으며, 이것이 유일한 방법입니다. 외부에서 액세스할 수 없는 전용 생성자가 있기 때문에 인스턴스화할 수 없습니다.

Java에서 voidVoid 사용

어떤 값도 반환하지 않는 메서드를 원하는 경우 void(모두 소문자)를 사용합니다. 다음 예제와 같이 printMessage() 메서드는 아무 것도 반환하지 않고 화면에 메시지를 출력합니다.

void(Main.java)에 대한 예제 코드:

public class Main {
  static void printMessage() {
    System.out.println("printMessage function just got executed!");
  }

  public static void main(String[] args) {
    printMessage();
  }
}

객체로 void 키워드를 제시해야 하는 상황이 있기 때문에 Java 프로그래밍에서 리플렉션을 수행하는 동안 Void(첫 글자를 대문자로 표시)를 사용할 수 있습니다.

동시에 Void 클래스의 객체를 생성할 수 없으며, 이것이 생성자가 비공개이고 외부에서 액세스할 수 없는 이유입니다.

또한 Void 클래스는 final 클래스이기 때문에 상속할 수 없습니다. 이것은 우리가 메소드의 반환 유형을 void로 얻는 반사에서 Void를 사용하도록 합니다.

Void(Main.java)에 대한 예제 코드:

public class Main {
  public static void main(String[] args) throws SecurityException, NoSuchMethodException {
    Class c1 = TestOne.class.getMethod("Test", (Class<?>[]) null).getReturnType();
    System.out.println(c1 == Void.TYPE); // true
    System.out.println(c1 == Void.class); // false
  }
}

Void(TestOne.java)에 대한 예제 코드:

class TestOne {
  public void Test() {}
}

출력:

True
False

제네릭을 사용하여 메서드의 반환 유형을 void로 가져올 수도 있습니다. 우리는 무언가에 대해 void를 반환할 수 있는 일반 클래스에 대한 코드를 작성하려고 합니다.

abstract class Foo<T> {
  abstract T bar();
}

class Bar extends Foo<Void> {
  Void bar() {
    return (null);
  }
}

출력:

True
False
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook