java holder_这个Holder <>在Java中做什么? - java

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

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…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值