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 回答