Java에서 void와 Void의 차이
java.lang.Void 유형은 java.lang.Integer와 유사합니다. Void는 void를 둘러싸고 개체 클래스를 확장하며 void에는 가능한 값이 없으므로 java.lang.Void를 인스턴스화할 수 없습니다.
우리는 Java 프로그래밍에서 Void와 void의 차이점을 찾고 이해하는 것을 목표로 합니다. 또한 Java 프로그래밍에서 Void 또는 void를 사용하는 방법과 위치를 배웁니다.
Java에서 void와 Void의 차이점
둘(Void & void)의 기본적인 차이점은 void는 기본 유형이고 Void는 Object에서 상속되는 참조 유형이라는 것입니다. 둘 중 어느 것도 가능한 값을 갖지는 않지만 둘 다 유형이 다릅니다.
void(모두 소문자)는 값의 부재를 나타내는 데 사용되는 부적절한 유형입니다. 표시 가능한 값이 없기 때문에 void는 함수나 메서드에서 값을 반환하지 않음을 의미합니다.
반면에 java.lang.Void는 객체를 반환하고, 합법적으로 작업을 수행하기 위해 null을 반환할 수 있으며, 이것이 유일한 방법입니다. 외부에서 액세스할 수 없는 전용 생성자가 있기 때문에 인스턴스화할 수 없습니다.
Java에서 void 및 Void 사용
어떤 값도 반환하지 않는 메서드를 원하는 경우 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
