Jac*_*ale 4 java swap pass-by-reference pass-by-value
每次我想交换两个值时我都要使用临时来做实际的交换.为什么Java不在任何类中为我们提供设施方法来简单地交换两个变量的值?
dac*_*cwe 12
Java是按值传递.这就是为什么你不能创建一个简单的交换方法(ref).
但是,您可以将引用包装在另一个对象中并交换内部引用:
public static void main(String[] args) {
Ref<Integer> a = new Ref<Integer>(1);
Ref<Integer> b = new Ref<Integer>(2);
swap(a, b);
System.out.println(a + " " + b); // prints "2 1"
}
public static <T> void swap(Ref<T> a, Ref<T> b) {
T tmp = a.value;
a.value = b.value;
b.value = tmp;
}
static class Ref<T> {
public T value;
public Ref(T t) {
this.value = t;
}
@Override
public String toString() {
return value.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2889 次 |
| 最近记录: |