>

누가 언제, 왜 누군가가 다음을 수행 할 것입니다 :

doSomething( (MyClass) null );

이거 해봤 어? 경험을 공유해 주시겠습니까?

  • 답변 # 1

    doSomething 인 경우  오버로드 된 경우 MyClass 에 null을 명시 적으로 캐스팅해야합니다  올바른 과부하가 선택되었습니다 :

    public void doSomething(MyClass c) {
        // ...
    }
    public void doSomething(MyOtherClass c) {
        // ...
    }
    
    

    캐스트 할 필요가없는 상황은 varargs 함수를 호출 할 때입니다 :

    class Example {
        static void test(String code, String... s) {
            System.out.println("code: " + code);
            if(s == null) {
                System.out.println("array is null");
                return;
            }
            for(String str: s) {
                if(str != null) {
                    System.out.println(str);
                } else {
                    System.out.println("element is null");
                }
            }
            System.out.println("---");
        }
        public static void main(String... args) {
            /* the array will contain two elements */
            test("numbers", "one", "two");
            /* the array will contain zero elements */
            test("nothing");
            /* the array will be null in test */
            test("null-array", (String[])null); 
            /* first argument of the array is null */
            test("one-null-element", (String)null); 
            /* will produce a warning. passes a null array */
            test("warning", null);
        }
    }
    
    

    마지막 줄은 다음과 같은 경고를냅니다 :

    와이즈 비즈 와이즈 비즈  Varargs를 위해   

    Example.java:26: warning: non-varargs call of varargs method with inexact argument type for last parameter;
    cast to 에 전화
     ~를 위해   비 Varargs 호출 및 억제   경고

    two

    이 두 가지 기능이 있다고 가정 해 봅시다.  두 번째 매개 변수에 유효한 값입니다.

    java.lang.String
    와이즈 비즈

    이 두 가지 방법은 두 번째 매개 변수 유형에 따라 다릅니다. java.lang.String[] 와 함께 그들 중 하나를 사용하려면  두 번째 매개 변수로 null 를 캐스트해야합니다.  컴파일러가 호출 할 함수를 결정할 수 있도록 해당 함수의 두 번째 인수 유형에 대한 것입니다.

    첫 번째 함수를 호출하려면 : void ShowMessage(String msg, Control parent);
    두 번째 : void ShowMessage(String msg, MyDelegate callBack);

    null

  • 이전 플러터 텍스트 자식 컨테이너 배경 설정
  • 다음 mysql - 각 값의 숫자를 세는 SQL