2013-08-16 75 views
0

問題1:關於接口有些問題

如果SSLSocketFactory的是一個接口,那麼又有什麼用

 " private static SSLSocketFactory TRUSTED_FACTORY;" ? 

是什麼TRUSTED_FACTORY是什麼意思?一個接口實例?

問題2:

final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { 

    public X509Certificate[] getAcceptedIssuers() { 
     return new X509Certificate[0]; 
    } 

    public void checkClientTrusted(X509Certificate[] chain, String authType) { 
     // Intentionally left blank 
    } 

    public void checkServerTrusted(X509Certificate[] chain, String authType) { 
     // Intentionally left blank 
    } 
    } }; 

的TrustManager是javax.net.ssl.TrustManager和X509TrustManager是javax.net.ssl.X509TrustManager.I知道X509TrustManager是的TrustManager的子接口,爲什麼我們可以實例使用關鍵字「新」的界面?並且,在實例化此接口時,聲明一些函數,如getAcceptedIssuers/checkClientTrusted是什麼意思?

+0

http://docs.oracle.com/javase/tutorial/java/IandI/interfaceAsType.html - >這是Java的一個基本功能,任何初學者的書都可以涵蓋,就像鏈接的教程一樣。 –

+2

您需要知道,這段代碼實際上做的是從根本上不安全,不應該用於生產代碼。 – EJP

回答

3

對問題1的回答:如果SSLSocketFactory是一個接口,那麼TRUSTED_FACTORY是對象的引用,它是實現SSLSocketFactory接口的類(而不是接口)的實例。

回答問題#2:該代碼創建匿名類(不是接口),其實現了X509TrustManager界面的一個實例。 Java允許你在另一個Java類中聲明匿名類。見http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html。與所有接口實現一樣,您需要提供接口中所有方法的實現(checkClientTrusted,checkServerTrusted和getAcceptedIssuers),但如果需要也可以添加新方法。