2013-08-16 5 views
0

question 1:Quelques questions sur les interfaces

si SSLSocketFactory est une interface, alors qu'est-ce que cela signifie par

 " private static SSLSocketFactory TRUSTED_FACTORY;" ? 

ce qui est TRUSTED_FACTORY? Une instance d'interface?

question 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 est javax.net.ssl.TrustManager et X509TrustManager est javax.net.ssl.X509TrustManager.I savoir X509TrustManager est un enfant de l'interface TrustManager Pourquoi peut-on Instanciez une interface utilisant le mot clé "nouveau"? Et, quel est le sens en déclarant certaines fonctions comme getAcceptedIssuers/checkClientTrusted lors de l'instanciation de cette interface?

+0

http://docs.oracle.com/javase/tutorial/java/IandI/interfaceAsType.html -> C'est une fonctionnalité de base de Java que couvre tout livre pour débutant, tout comme le didacticiel lié. –

+2

Vous devez savoir que ce code est radicalement non sécurisé et ne doit pas être utilisé dans le code de production. – EJP

Répondre

3

Réponse à la question 1: Si SSLSocketFactory est une interface, alors TRUSTED_FACTORY est une référence à un objet qui est une instance d'une classe (pas une interface) qui implémente l'interface SSLSocketFactory.

Réponse à la question 2: Ce code crée une instance d'une classe anonyme (pas une interface) qui implémente l'interface X509TrustManager. Java vous permet de déclarer des classes anonymes dans une autre classe Java. Voir http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html. Comme pour toutes les implémentations d'interfaces, vous devez fournir une implémentation de toutes les méthodes de l'interface (checkClientTrusted, checkServerTrusted et getAcceptedIssuers), mais vous pouvez également ajouter de nouvelles méthodes si nécessaire.