java – 将参数传递给方法的一种奇怪方法
发布时间:2020-05-24 23:48:09 所属栏目:Java 来源:互联网
导读:我正在浏览 Exchange Web Services Java API代码,并看到了开发人员将参数传递给他们的方法的设计选择.您可以帮助解释一下该技术的好处 – 在传递给方法之前,由方法处理的类型由Generic Wrapper类包装,例如,如果方法是处理String,则将新的Param()传递给Param定
|
我正在浏览 Exchange Web Services Java API代码,并看到了开发人员将参数传递给他们的方法的设计选择.您可以帮助解释一下该技术的好处 – 在传递给方法之前,由方法处理的类型由Generic Wrapper类包装,例如,如果方法是处理String,则将新的Param()传递给Param定义为的方法如下 class Param<T> {
private T param;
public T getParam() { return param; }
public void setParam(T param) { this.param = param }
}
这是源代码片段 – 该方法适用于HttpWebRequest对象. protected HttpWebRequest emit(OutParam<HttpWebRequest> request)
throws Exception {
request.setParam(this.getService().prepareHttpWebRequest());
OutputStream urlOutStream = request.getParam().getOutputStream();
EwsServiceXmlWriter writer = new EwsServiceXmlWriter(this.service,urlOutStream);
this.writeToXml(writer);
urlOutStream.flush();
urlOutStream.close();
writer.dispose();
request.getParam().executeRequest();
if(request.getParam().getResponseCode() >= 400)
{
throw new Exception("The remote server returned an error:("+request.getParam().getResponseCode()+")"+request.getParam().getResponseText());
}
return request.getParam();
}
那么为什么不直接传递HttpWebRequest对象 – 解决方法在方法入口处,包装的HttpWebRequest实例应为null.这是一种通过return语句之外的其他方式返回实例的方法,即使在方法调用期间出现问题(例如,如果抛出异常).这种模式在某种程度上等同于C#中的关键字out.它还可以用于返回对象的错误状态:bool getGreetings(OutParam<Greetings> greetings) {
if (aCondition) {
greetings.setParam(new Greetings("Hello");
return true; // everything's fine
}
return false;
}
而不是写: Greetings getGreetings() {
if (aCondition) {
return new Greetings("Hello");
}
return null; // caller will have to test a null condition to know it the operation was ok
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
