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에 뭔가 펑키 할 수 있다고 말하고 싶습니다. 원하는 작업을 수행하는 더 좋은 방법이 있는지 신중하게 고려하십시오 (다른 후속 질문에서 더 자세한 내용을 제공 할 수 있습니까?). 이것은 “제네릭의 사용으로 인해”나온 것이기 때문에 조금 의심 스럽습니다.
답변
Void를 인스턴스화하는 방법이 없으므로 반환 할 수 있는 유일한 것은 null입니다.
답변
return null
갈 길입니다.
답변
귀하가 제공 한 다른 제안이 작동하지 않는 이유를 명확히하려면 :
Void.class
와 Void.TYPE
같은 객체를 가리키고 타입 인 Class<Void>
의하지 Void
.
그렇기 때문에 해당 값을 반환 할 수 없습니다. new Void()
유형 Void
이지만 해당 생성자는 존재하지 않습니다. 사실, Void
공용 생성자가 없으므로 인스턴스화 할 수 없습니다 . Void
다형성을 제외하고 유형의 객체를 가질 수 없습니다 null
.
도움이 되었기를 바랍니다! 🙂
답변
모호한 이유로이 유형을 사용해야한다면 반환 값이 어쨌든 사용되지 않을 것이라고 가정하기 때문에 실제로 null을 반환하는 것이 현명한 옵션 인 것 같습니다.
컴파일러는 어쨌든 무언가를 반환하도록 강제합니다.
그리고이 클래스에는 공개 생성자가없는 것 같으므로 new Void ()는 불가능합니다.
답변
이렇게.
public Class TestClass {
public void testMethod () {
return;
}
}