如果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是什么意思?
答案 0 :(得分:3)
对问题#1的回答:如果SSLSocketFactory是一个接口,那么TRUSTED_FACTORY
是对象的引用,该对象是实现SSLSocketFactory接口的类(不是接口)的实例。
对问题#2的回答:此代码创建了一个实现X509TrustManager接口的匿名类(不是接口)的实例。 Java允许您在另一个Java类中声明匿名类。见http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html。与接口的所有实现一样,您需要提供接口中所有方法的实现(checkClientTrusted,checkServerTrusted和getAcceptedIssuers),但如果需要,还可以添加新方法。