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 です。X509TrustManager が TrustManager の子インターフェースであることは知っていますが、キーワード「new」を使用してインターフェースをインスタンス化できるのはなぜですか? そして、このインターフェースをインスタンス化するときに getAcceptedIssuers/checkClientTrusted のようないくつかの関数を宣言することの意味は何ですか?

4

1 に答える 1

3

質問 1 への回答: SSLSocketFactory がインターフェースの場合TRUSTED_FACTORY、SSLSocketFactory インターフェースを実装するクラス (インターフェースではない) のインスタンスであるオブジェクトへの参照です。

質問 2 への回答: このコードは、X509TrustManager インターフェイスを実装する匿名クラス (インターフェイスではない) のインスタンスを作成しています。Java では、別の Java クラス内で匿名クラスを宣言できます。http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.htmlを参照してください。インターフェースのすべての実装と同様に、インターフェース内のすべてのメソッド (checkClientTrusted、checkServerTrusted、および getAcceptedIssuers) の実装を提供する必要がありますが、必要に応じて新しいメソッドを追加することもできます。

于 2013-08-16T03:14:21.310 に答える