关于接口的一些问题

时间:2013-08-16 03:05:53

标签: java ssl interface

问题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是什么意思?

1 个答案:

答案 0 :(得分:3)

对问题#1的回答:如果SSLSocketFactory是一个接口,那么TRUSTED_FACTORY是对象的引用,该对象是实现SSLSocketFactory接口的类(不是接口)的实例。

对问题#2的回答:此代码创建了一个实现X509TrustManager接口的匿名类(不是接口)的实例。 Java允许您在另一个Java类中声明匿名类。见http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html。与接口的所有实现一样,您需要提供接口中所有方法的实现(checkClientTrusted,checkServerTrusted和getAcceptedIssuers),但如果需要,还可以添加新方法。