programing

Java Void 참조 유형에 사용?

itsource 2022. 8. 1. 22:28
반응형

Java Void 참조 유형에 사용?

Void-- 대문자 V -- 참조 유형.내가 지금까지 본 유일한 상황은 변수로 삼는 것이다.Callables

final Callable<Void> callable = new Callable<Void>() {
            public Void call() {
                foobar();
                return null;
            }
        };

요?Void 경우,에 다른 것을 할 수 ?null약면면면면면면면면면면면면면?

Void관심 없는 일반적인 주장의 관례가 되었습니다. 외의 타입: 비인스턴스 이외의 타입은 .System.

에서도 많이 .Map단, 「」(단,Collections.newSetFromMapBoolean은 ""를 받아들일 없기 에""」를 참조해 주세요.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> 매력적으로 작용합니다.:)

공공 건설사가 없다는 것을 고려하면, 나는 그것이 다른 어떤 것도 할당될 수 없다고 말하고 싶다.nullI 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 게 더 voiddiscloss.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그 원초적인 것을 포장하기 위해 만들어졌다.voidtype. 모든 프리미티브 타입에는 대응하는 참조 타입이 있습니다. 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

반응형