메소드의 리턴 유형이 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.class
와 Void.TYPE
같은 객체를 가리키고 타입 인 Class<Void>
의하지 Void
.
따라서 해당 값을 반환 할 수 없습니다. new Void()
유형 Void
이지만 생성자가 존재하지 않습니다. 사실, Void
공개 생성자가 없으므로 인스턴스화 할 수 없습니다 . Void
polymorphic 이외 의 유형의 객체는 가질 수 없습니다 null
.
도움이 되었기를 바랍니다! :-)
모호한 이유로이 유형을 사용해야하는 경우 실제로 반환 값을 사용하지 않기 때문에 null을 반환하는 것이 합리적인 옵션 인 것 같습니다.
컴파일러는 어쨌든 무언가를 반환하도록 강제합니다.
그리고이 클래스에는 공개 생성자가없는 것처럼 보이므로 새로운 Void ()는 불가능합니다.
그냥 이렇게
public Class TestClass {
public void testMethod () {
return;
}
}
'Programming' 카테고리의 다른 글
C ++ 템플릿 메타 프로그래밍에 대한 최고의 소개? (0) | 2020.07.27 |
---|---|
각도 ngModule의 entryComponents 란 무엇입니까? (0) | 2020.07.27 |
“클라이언트 (&)에서 잠재적으로 위험한 Request.Path 값을 발견했습니다” (0) | 2020.07.27 |
파이썬의 json 모듈, int 사전 키를 문자열로 변환 (0) | 2020.07.27 |
std :: vector의 초기 크기를 설정하는 방법은 무엇입니까? (0) | 2020.07.27 |