有人可以解释一下此代码吗?

public void getSupplierByZipCode(

@WebParam(name = "zip", targetNamespace = "http://www.webservicex.net/")

String zip,

@WebParam(name = "GetSupplierByZipCodeResult", targetNamespace = "http://www.webservicex.net/", mode = WebParam.Mode.OUT)

Holder getSupplierByZipCodeResult,

@WebParam(name = "SupplierDataLists", targetNamespace = "http://www.webservicex.net/", mode = WebParam.Mode.OUT)

Holder supplierDataLists);

我以前从未在Java中见过Holder。函数中的Holder和Holder是什么?他们喜欢输出吗?我需要此功能的供应商数据列表。

参考方案

参见Holder-整个目的是“保留一个值”,同时允许对其自身进行副作用修改(并因此更改其“保留”的值)。

可以重新分配表示包含/“持有”值的实例变量(value);通过显式修改作为参数提供的持有者,这用于简化WS中“多个”值的“返回”方式。 (还要注意WebParam.Mode.OUT的用法。)

由于Java始终为Call By Value,因此需要此“额外层”;然后,持有人有效地伪造了一个指针间接寻址(我们称其为“引用间接寻址”),就像在C语言中可能所做的那样,这导致了Call By (Object) Sharing语义。

想像:

// Outside WS function - setup parameters and invoke

String zip = "98682";

Holder result = new Holder();

getSupplierByZipCode(zip, result, ..);

// Then inside the function the Holder is modified and a new value

// is assigned to it's value member.

getSupplierByZipCodeResult.value = true;

// And outside again, the mutations are visibile still

if (result.value) {

// Yay!

}

由于字符串是不可变的,并且邮政编码没有包装在Holder中,因此无法通过WS调用更改(或“返回”)邮政编码。

也可以看看:

Is Java "pass-by-reference" or "pass-by-value"?

How to implement int in/out params in java

Java中的<>>是什么意思? - java

This question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…菱形运算符<>是否等于 - java

我在util.TreeSet类中发现,其中一个构造函数正在使用具有空泛型类型的新TreeMap调用另一个构造函数。 public TreeSet(Comparator super E> comparator) { this(new TreeMap<>(comparator)); } new TreeMap<>是什么意思…休眠映射> - java

我有以下表格:@Entity @Table(name = "events") Event --id --name @Entity @Table(name = "state") State --id --name @Entity @Table(name = "action") Action --id …通过Maven编译器插件不会发生有限的包含和排除 - java

我正在使用3.6.0版的maven编译器插件,在此我们只想在特定文件夹中编译一个文件,而在该位置编译所有其他文件。例如:在文件夹应用程序中有14个文件,从那我只希望编译1个文件,但它编译了所有文件,如果我要排除,则它也不起作用。 ${basedir}/../src/java转换为List - java

当我写下面的代码时,编译器说 无法从ArrayList转换为Listprivate List get(){ return new ArrayList(); } 但是当我用通配符编写返回类型时,代码会编译。private List&l…

java holder_这个Holder 在Java中做什么? - java相关推荐

  1. ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home

    我有错误 Exception in thread"main" java.lang.NoClassDefFoundError: 当我尝试在Ubuntu上运行编译类时.我使用的是一个非 ...

  2. java程序设计案例教程 钱银中_《Java程序设计案例教程》【价格 目录 书评 正版】_中国图书网...

    出版说明 前言 第1章 概述 1.1 Java语言的发展历史 1.2 Java语言的特点 1.3 Java虚拟机 1.4 Java的应用 1.5 Java开发环境的建立 1.6 编辑.编译和运行Jav ...

  3. java将图片放进mysql中_在java代码中怎么从服务器上把图片拿来放到数据库里

    展开全部 看你用的是么数据库,一般是读取后转e68a84e8a2ad3231313335323631343130323136353331333431346430成二进制blob格式存入数据库的BLOB ...

  4. java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  5. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创

    由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...

  6. java se环境变量_Windows 7中配置JDK(Java SE)环境变量

    系统:Windows 7旗舰版 JDK:Java SE 1.6 S1: 鼠标右键"计算机-属性-高级-环境变量-系统变量". S2: 在"系统变量"中,设置3项 ...

  7. Current在Java里面_在C#中相当于Java System.currentTimeMillis()

    替代: private static readonly DateTime Jan1st1970 = new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Ut ...

  8. info java module_如何在Jdk9 / java-9中解决module-info.java编译错误

    我试图使用jdk-9在代码下运行,但在使用命令编译时遇到问题 命令 javac -d mods .\module-info.java com\nirav\modi\Test.java 错误 .\mod ...

  9. JAVA面试要点006---.net中的委托与java中的代理模式和委托

    1.1.1 定义 委托是一种引用方法的类型.一旦为委托分配了方法,委托将与该方法具有完全相同的行为.委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示: //Code in C# ...

最新文章

  1. 如何生成存储器配置文件?
  2. python图片识别拉框_python目标检测给图画框,bbox画到图上并保存案例
  3. python操作yaml
  4. java中Thread与Runnable的区别
  5. java运算级别_java运算符优先级别
  6. 港股通收市竞价交易机制科普
  7. js将文件大小字节转换成B,KB,MB,GB,TB方法
  8. 腾讯地图javascript API实现地图模糊搜索标记,经纬度输入及点击双向定位
  9. SOLIDWORKS: Visualize SOLIDWORKS:可视化 Lynda课程中文字幕
  10. 超级计算机神威太湖之光图片,超级计算机“神威·太湖之光”世界最快
  11. 学计算机的演员,南开大学计算机系到演员 张桐回顾“不安分”的青春
  12. 主方法外单独的两个类,不能直接互相调用
  13. 2021年技术体系架构
  14. [svn]log命令
  15. 前庭电刺激(GVS)的数据分析及在神经康复中的应用
  16. minio存储之纠删码(Erasure Code)
  17. Java实验(13) 正八边形类
  18. HTML5 实现橡皮擦的擦除效果
  19. 摘录--《思考中医》刘力红著
  20. java就是这个世界上最牛逼的语音,不接受任何反驳

热门文章

  1. Win10系统下浏览器缓存怎么清理?
  2. android扁平风格图标下载,meeyo下载-meeyo扁平风格圆图标包下载v3.9.1 安卓版-西西软件下载...
  3. 恭喜吴彦冰博士获得2022数字经济创新创业大赛全国总决赛三等奖
  4. 分享一款很好用的自带壁纸——酷狗动态壁纸
  5. 自定义 View 歌词控件
  6. WLAN部署(AC+AP)配置及常见问题记录
  7. 通刷 mgv3001、CM211-1、CM311-1_S905L3_安卓9.0_线刷固件包
  8. 2019年高中数学向量解题技巧_(高考题)
  9. GDB源码移动后如何调试以及几种解决方法
  10. 2021-TRN2-A