Java Void 참조 유형에 사용?
가 Void
-- 대문자 V -- 참조 유형.내가 지금까지 본 유일한 상황은 변수로 삼는 것이다.Callable
s
final Callable<Void> callable = new Callable<Void>() {
public Void call() {
foobar();
return null;
}
};
요?Void
이 경우, 이 외에 다른 것을 할 수 ?null
약면면면면면면면면면면면면면?
Void
관심 없는 일반적인 주장의 관례가 되었습니다. 외의 타입: 비인스턴스 이외의 타입은 .System
.
에서도 많이 .Map
단, 「」(단,Collections.newSetFromMap
Boolean
은 ""를 받아들일 없기 에""」를 참조해 주세요.null
) 및 ()java.security.PrivilegedAction
.
반사를 사용하여 보이드의 인스턴스를 만들 수 있지만 이러한 인스턴스(instance)는 유용하지 않습니다.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
I don't need to this generic parameter 。
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
discloss.discloss.
덧붙여서, 지난번에 시도했을 때 BeanShell이 인식하지 못했습니다.void.class
써야 Void.TYPE
저기.
방문자 패턴을 사용하는 경우 반환 값이 null이 되도록 하려면 개체 대신 보이드를 사용하는 것이 더 깔끔할 수 있습니다.
예
public interface LeavesVisitor<OUT>
{
OUT visit(Leaf1 leaf);
OUT visit(Leaf2 leaf);
}
방문자를 구현할 때 OUT를 Void로 명시적으로 설정하여 방문자가 객체를 사용하는 대신 항상 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;
}
}
Generics 이전에는 Method.getReturnType()에 의해 void 메서드에 대해 반환된 TYPE을 유지하기 위해 리플렉션 API용으로 작성되었습니다.
편집: JavaDoc of Void에서: "Void 클래스는 Java 키워드 void를 나타내는 Class 객체에 대한 참조를 유지하는 인스턴스 불가능한 플레이스 홀더 클래스입니다."Generics 이전에는 Reflection 이외에는 아무 소용이 없었습니다.
Void를 인스턴스화할 수 없기 때문에 Apache Commons Null 객체를 사용할 수 있습니다.
Null aNullObject = ObjectUtils.Null;
Null noObjectHere = null;
첫 번째 줄에는 어떤 물체가 있기 때문에aNullObject != null
두 번째 줄에는 참조가 없기 때문에 유지된다.noObjectHere == null
쥔다
포스터의 첫 번째 질문에 답하자면, "무"와 "무"는 전혀 다른 것을 구별하기 위한 것입니다.
PS: Null 객체 패턴에 대해 '아니오'라고 말합니다.
Void
그 원초적인 것을 포장하기 위해 만들어졌다.void
type. 모든 프리미티브 타입에는 대응하는 참조 타입이 있습니다. Void
는 범용 클래스 또는 범용 메서드의 사용을 인스턴스화하기 위해 사용됩니다.여기 예가 있습니다.
public void onNewRegistration() {
newRegistrationService.createNewUser(view.getUsername(), view.getPassword(),
view.getInitialAmount(), view.getCurrency(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(Void result) {
eventBus.fireEvent(new NewRegistrationSuccessEvent());
}
});
}
여기에서는, 보다시피, 새로운 등록의 작성을 요구하는 서버로부터 아무것도 받고 싶지 않습니다만,public interface AsyncCallback<T> { .... }
범용 인터페이스이기 때문에Void
제네릭은 원시적인 타입을 받아들이지 않기 때문에
또한 이 명령어는 일반적으로 비동기 IO 완료 콜백에 사용됩니다.Attachment
물건.이 경우 IO 조작 및 구현에 null을 지정합니다.CompletionHandler<Integer,Void>
.
아주 드문 경우이긴 하지만 한번은Void
애스펙트 클래스에서.
이 양태는 다음 방법으로 실행되며, 이 양태는@Log
주석 및 반환된 메서드 및 메서드 반환 유형이 비활성화되지 않은 경우 일부 정보를 기록합니다.
@AfterReturning(value = "@annotation(log)",
returning = "returnValue",
argNames = "joinPoint, log, returnValue"
)
public void afterReturning(final JoinPoint joinPoint, final Log log,
final Object returnValue) {
Class<?> returnType = ((MethodSignature) joinPoint.getSignature())
.getReturnType();
if (Void.class.isAssignableFrom (returnType)) ) {
//Do some log
}
}
언급URL : https://stackoverflow.com/questions/643906/uses-for-the-java-void-reference-type
'programing' 카테고리의 다른 글
Vue 2용 Vue 3 텔레포트 (0) | 2022.08.01 |
---|---|
조건부로 송신 버튼을 무효로 하는 방법을 설명합니다. (0) | 2022.08.01 |
"this"는 vue.js 워처에 정의되어 있지 않습니다. (0) | 2022.08.01 |
Vue에서 두 비동기 작업 간의 종속성 (0) | 2022.08.01 |
라우터 푸시 후 asyncData에서 루트 매개 변수 (0) | 2022.08.01 |