我正在阅读一些创建连接并发送SOAP消息的程序。我遇到了一条奇怪的声明,其中在函数参数中传递了包括主体在内的完整功能。有人可以解释一下吗?请注意,这是一个有效的代码。
//Open up connection
httpsConnection = (HttpsURLConnection) new URL(url).openConnection();
httpsConnection.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
这是一个匿名内部类。您可以在这里了解更多信息:http : //docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
匿名类使您可以使代码更简洁。它们使您可以同时声明和实例化一个类。它们就像本地类,只是它们没有名称。如果只需要使用一次本地类,则使用它们。
假设这段代码是这样写的:
httpsConnection = (HttpsURLConnection) new URL(url).openConnection();
httpsConnection.setHostnameVerifier(new MyHostnameVerifier());
// another class file
public class MyHostnameVerifier extends HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
此代码将具有完全相同的功能。还有其他一些细微差别可能不适用于您的示例,但是如果您有兴趣的话,可以在链接中阅读它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句