자바가 Void
V– 대문자 – 참조 형은 . 내가 본 유일한 상황은 Callable
s 를 매개 변수화하는 것입니다.
final Callable<Void> callable = new Callable<Void>() {
public Void call() {
foobar();
return null;
}
};
Java Void
참조 유형에 다른 용도가 있습니까? 그것 이외의 다른 것을 할당 할 수 있습니까 null
? 그렇다면 예가 있습니까?
답변
Void
에 관심이없는 일반적인 주장에 대한 관례가되었습니다.와 같은 다른 불가 한 유형을 사용해야하는 이유는 없습니다 System
.
또한 자주 예에 사용된다 Map
(비록 값을 Collections.newSetFromMap
사용 Boolean
지도로 받아 들일 필요가 없습니다 null
값)와 java.security.PrivilegedAction
.
몇 년 전에 웹 로그 항목 을 썼습니다 Void
.
답변
리플렉션을 사용하여 Void 인스턴스를 만들 수는 있지만 아무 것도 유용하지 않습니다. 무효는 일반 메소드가 아무것도 리턴하지 않음을 표시하는 방법입니다.
Constructor<Void> constructor = Void.class.getDeclaredConstructor();
constructor.setAccessible(true);
Void v = constructor.newInstance();
System.out.println("I have a " + v);
다음과 같은 것을 인쇄합니다
I have a java.lang.Void@75636731
답변
Future<Void>
매력처럼 작동합니다. 🙂
답변
공개 생성자 가 없기 때문에 이외의 다른 것을 할당 할 수 없다고 말할 수 있습니다 null
. 예제에서 보듯이 “이 일반 매개 변수를 사용할 필요가 없습니다”라는 자리 표시 자로 만 사용했습니다.
Javadoc이 말한 내용을 반영하여 사용할 수도 있습니다 .
Void 클래스는 Java 키워드 void를 나타내는 Class 객체에 대한 참조를 보유 할 수없는 자리 표시 자 클래스입니다.
답변
모든 프리미티브 래퍼 클래스 ( Integer
, Byte
, Boolean
, Double
, 등)의 고정에 대응하는 기본 클래스에 대한 참조 포함 TYPE
예컨대 필드 :
Integer.TYPE == int.class
Byte.TYPE == byte.class
Boolean.TYPE == boolean.class
Double.TYPE == double.class
Void
void
유형 에 대한 참조를 넣기 위해 처음에 어딘가로 작성되었습니다 .
Void.TYPE == void.class
그러나을 사용하여 실제로 얻는 것은 없습니다 Void.TYPE
. 사용 void.class
하면 void
유형으로 무언가를하고 있다는 것이 훨씬 명확합니다 .
따로, 마지막으로 시도했을 때 BeanShell 은 인식하지 못했기 void.class
때문에 Void.TYPE
거기 에서 사용해야 합니다.
답변
당신이 사용하는 경우 방문자 패턴을 당신이 반드시 반환 값이 null이 될 것으로 할 때 청소기 대신 객체의 무효 사용할 수 있습니다
예
public interface LeavesVisitor<OUT>
{
OUT visit(Leaf1 leaf);
OUT visit(Leaf2 leaf);
}
방문자를 구현할 때 방문자를 명시 적으로 무효로 설정하여 방문자가 Object를 사용하는 대신 항상 null을 반환한다는 것을 알 수 있습니다.
public class MyVoidVisitor implements LeavesVisitor<Void>
{
Void visit(Leaf1 leaf){
//...do what you want on your leaf
return null;
}
Void visit(Leaf2 leaf){
//...do what you want on your leaf
return null;
}
}
답변
제네릭 이전에는 리플렉션 API에 대해 생성되어 다른 기본 유형 클래스에 해당하는 void 메소드에 대해 Method.getReturnType ()에 의해 리턴 된 TYPE을 보유합니다.
편집 : Void의 JavaDoc에서 : “Void 클래스는 Java 키워드 void를 나타내는 Class 객체에 대한 참조를 보유 할 수없는 자리 표시 자 클래스입니다.” 제네릭 이전에는 리플렉션 이외의 용도는 없습니다.