我正在阅读Dean Wampler的Java Ovisionilly Java开发人员函数编程。
在第9页上,它使用了一个标题为:
的示例“请考虑以下示例,其中使用可变列表来保存客户的订单:
public class Customer {
//No setter method
private final List <Order> orders;
public List <Order> getOrders() {return orders;}
public Customer (...) {...}
确定。
根据这本书,如果我将最终分配给List,则意味着它不会发生变异,因为它会阻止重新分配其值。
(...)&amp;的含义是什么?的 {...}
非常感谢您提前解释。
答案 0 :(得分:3)
你的解释错了或者这本书出错:
这个
private final List <Order> orders =....;
仅表示您不能像以后某处那样更改该引用
orders = new ArrayList<>();
但是列表可以肯定是变异的,因为你可以放置,删除和截断其内容
答案 1 :(得分:1)
according to the book, if I assign final to a List it means that it will not mutate because it prevents the reassignment of its value.
是的&#39;私人决赛&#39;意味着你无法改变价值。 这意味着你需要在变化时重新创建它。 这使得该类通过使用可变数据结构而不可变。
编辑:澄清一下,列表是可变的。该类是不可变的,因为列表是私有的和最终的,并且没有setter。这使得列表只读。
What its the meaning of (...) & {...}
三个点通常代表与示例无关的代码。
代码我们是Costumer构建的一个例子。
在这种情况下(...)
是函数签名参数(这意味着有一些参数,但对于该示例并不重要。
{...}
代表函数体,这又与示例无关。