>  기사  >  Java  >  java.lang.Void와 void의 사용방법 비교

java.lang.Void와 void의 사용방법 비교

黄舟
黄舟원래의
2017-10-11 09:40:011635검색

이 글은 java.lang.Void와 void의 비교와 사용법을 주로 소개하는 글인데, 편집자가 보기엔 꽤 괜찮다고 생각해서 필요하신 분들은 참고하시면 될 것 같습니다.

void는 함수가 아니며 메서드의 수정자입니다. void는 메서드에 반환 값이 없음을 의미합니다. 즉, 메서드는 메서드의 명령문만 실행하고 아무것도 반환하지 않음을 의미합니다.

java.lang.Void는 유형입니다. 예를 들어 Void 참조에 null을 할당합니다.


Void nil = null;

Void 클래스의 코드에서 볼 수 있듯이 Void 유형은 상속 및 인스턴스화할 수 없습니다.


public final
class Void {
  /**
   * The {@code Class} object representing the pseudo-type corresponding to
   * the keyword {@code void}.
   */
  @SuppressWarnings("unchecked")
  public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");
  /*
   * The Void class cannot be instantiated.
   */
  private Void() {}
}

Void는 함수의 반환 결과로 함수가 null을 반환한다는 의미입니다(null을 제외한 다른 유형은 반환할 수 없음).


Void function(int a, int b) {
  //do something
  return null;
 }

제네릭이 등장하기 전에는 일반적으로 Void를 리플렉션에 사용했습니다. 예를 들어, 다음 코드는 반환 유형이 void인 메서드 이름을 인쇄합니다.


public class Test {
  public void print(String v) {}
  public static void main(String args[]){
    for(Method method : Test.class.getMethods()) {
      if(method.getReturnType().equals(Void.TYPE)) {
        System.out.println(method.getName());
      }
    }
  }
}

제네릭이 등장한 후 특정 시나리오에서는 Void 유형이 사용됩니다. 예를 들어, Future8742468051c85b06f0a0af9e3e506b5c는 결과를 저장하는 데 사용됩니다. Future의 get 메소드는 결과(T 유형)를 반환합니다.

하지만 작업이 값을 반환하지 않으면 어떻게 되나요? 이 경우 Future903bf37051cf83cbd9686768ac0189ae로 표현될 수 있다. get이 호출되고 결과가 계산되면 null이 반환됩니다.
또한 Void는 Mapbd1f348043883594477738d6b6495f86와 같은 가치가 없는 지도에도 사용되므로 해당 지도는 Set8742468051c85b06f0a0af9e3e506b5c와 동일한 기능을 갖게 됩니다.

그래서 제네릭을 사용하는 경우 함수가 결과를 반환할 필요가 없거나 객체에 값이 필요하지 않은 경우 java.lang.Void 형식으로 표현할 수 있습니다.

요약

위 내용은 java.lang.Void와 void의 사용방법 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.