我被告知突变导致方法依赖于顺序(例如Mutation)
但是,考虑到以下方法(为简单起见忽略null),我无法看到在相同的参数下,两者的行为方式如何。
SQLParameterCollection
所以我的问题是:
答案 0 :(得分:2)
如果在x
之后运行y
,则会得到不同的输出,尽管y
的调用看起来是一样的。
StringBuffer stringBuffer = new StringBuffer();
x(stringBuffer);
System.out.println(y(stringBuffer)); // gives aa
StringBuffer stringBuffer = new StringBuffer();
System.out.println(y(stringBuffer)); // gives a
x(stringBuffer);
在这个小例子中,stringBuffer
中实例的内部状态决定了输出,并且调用哪个方法的详细信息对此非常重要。
x
有副作用,因为它会更改StringBuffer
实例的状态。可能有几个优点和缺点,讨论它们超出了范围。
PS:在Java中使用StringBuilder
而不是StringBuffer
。