Programming

메소드의 리턴 유형이 Void이면 어떻게 리턴합니까?

procodes 2020. 7. 27. 21:39
반응형

메소드의 리턴 유형이 Void이면 어떻게 리턴합니까? (공백 아님!)


Java에서 Generics를 사용했기 때문에 Void반환 유형으로 함수를 구현해야했습니다 .

public Void doSomething() {
    //...
}

컴파일러는 무언가를 반환하도록 요구합니다 . 지금은 방금 돌아오고 null있지만 그것이 좋은 코딩 연습인지 궁금합니다.

나는에 대해 부탁 해요 V는 OID가 아닌 v에 OID. 클래스 Void, 하지 예약 된 키워드 void.

나는 또한 시도했다 Void.class, void, Void.TYPE, new Void(), 전혀 작동하지 않습니다 전혀 전혀 반환 있지만, 모든. (명확한 이유가 있기 때문에) (자세한 내용은 이 답변 을 참조하십시오)

  • 그래서 함수의 반환 유형이 무엇인지 반환해야 Void합니까?
  • Void수업 의 일반적인 용도는 무엇입니까 ?

따라서 함수의 반환 유형이되어야하는 경우 반환 해야하는 것은 무엇 Void입니까?

사용하십시오 return null. Void인스턴스화 할 수 없으며의 Class<T>유형에 대한 자리 표시 자일뿐입니다 void.

요점이 Void뭐야?

위에서 언급했듯이 자리 표시 자입니다. Void예를 들어 리플렉션을 사용하여 반환 유형이 인 메서드를 보면 다시 얻을 수 있습니다 void. (기술적으로는 다시 돌아옵니다 Class<Void>.) 매개 변수를 지정하려는 경우와 같이 이러한 행을 따라 다른 여러 용도가 Callable<T>있습니다.

Java에서 제네릭을 사용했기 때문에이 기능을 구현해야했습니다.

이 서명으로 메소드를 구현 해야하는 경우 API에 뭔가 펑키 할 수 있다고 말하고 싶습니다. 원하는 것을 더 잘 수행 할 수있는 방법이 있는지주의 깊게 고려하십시오 (아마 다른 후속 질문에서 더 자세한 내용을 제공 할 수 있습니까?). 나는 이것이 "제네릭의 사용으로 인해"나왔기 때문에 조금 의심 스럽다.


무효를 인스턴스화 할 있는 방법이 없으므로 반환 있는 유일한 것은 null입니다.


return null 갈 길입니다.


다른 제안이 효과가없는 이유를 분명히하려면 :

Void.classVoid.TYPE같은 객체를 가리키고 타입 인 Class<Void>의하지 Void.

따라서 해당 값을 반환 할 수 없습니다. new Void()유형 Void이지만 생성자가 존재하지 않습니다. 사실, Void공개 생성자가 없으므로 인스턴스화 할 수 없습니다 . Voidpolymorphic 이외 의 유형의 객체는 가질 수 없습니다 null.

도움이 되었기를 바랍니다! :-)


모호한 이유로이 유형을 사용해야하는 경우 실제로 반환 값을 사용하지 않기 때문에 null을 반환하는 것이 합리적인 옵션 인 것 같습니다.
컴파일러는 어쨌든 무언가를 반환하도록 강제합니다.
그리고이 클래스에는 공개 생성자가없는 것처럼 보이므로 새로운 Void ()는 불가능합니다.


그냥 이렇게

public Class TestClass {
    public void testMethod () {
        return;
    }
}

참고 URL : https://stackoverflow.com/questions/676663/what-do-i-return-if-the-return-type-of-a-method-is-void-not-void

반응형