HOWTO · Java

Java에서 void와 Void의 차이

이 기사는 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