2015-02-05 2 views
1

연결을 만들고 SOAP 메시지를 보내는 프로그램을 읽었습니다. 나는 몸체를 포함한 완전한 함수가 메소드 매개 변수에 전달되는 이상한 문장을 발견했다. 아무도 이것을 설명 할 수 있습니까? 이 코드는 작동 코드입니다.메서드 호출에 대한 함수 몸체

//Open up connection 
httpsConnection = (HttpsURLConnection) new URL(url).openConnection(); 

httpsConnection.setHostnameVerifier(new HostnameVerifier() { 
    @Override 
    public boolean verify(String hostname, SSLSession session) { 
    return true; 
    } 
}); 
+1

익명의 내부 클래스입니다. – chrylis

+0

감사합니다 chrylis, 그것은 개체 TRUE가 매개 변수로 전달된다는 것을 의미합니까? –

+0

아니요, 단일 용도 클래스가 인스턴스화되어 전달되었습니다. – chrylis

답변

2

이것은 익명의 내부 클래스입니다. 자세한 내용은 여기를 참조하십시오. http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

익명 클래스를 사용하면 코드를보다 간결하게 만들 수 있습니다. 이 클래스를 사용하면 클래스를 동시에 선언하고 인스턴스화 할 수 있습니다. 그들은 이름이 없다는 것을 제외하고는 로컬 클래스와 같습니다. 로컬 클래스를 한 번만 사용해야하는 경우에 사용하십시오.

이 코드이 대신 같은 기록 된 척 :

httpsConnection = (HttpsURLConnection) new URL(url).openConnection(); 

httpsConnection.setHostnameVerifier(new MyHostnameVerifier()); 

// another class file 

public class MyHostnameVerifier extends HostnameVerifier() { 
    @Override 
    public boolean verify(String hostname, SSLSession session) { 
    return true; 
    } 
}); 

이 코드는 정확히 같은 기능을 사용할 수 있습니다. 이것에 대한 약간의 뉘앙스가 당신의 예제에는 적용되지 않지만, 관심이 있다면 링크를 통해 읽을 수 있습니다.

+1

감사합니다. Daniel !! –

관련 문제