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