/**
* 主方法定義了兩個Integer變量,通過調用swap方法後,使這兩個變量交換數據
*/
public class swapImpl {
public static void main(String[] args) throws Exception {
Integer a = 1;
Integer b = 2;
System.err.println(a + "---" + b);
swap(a, b);
System.err.println(a + "---" + b);
}
public static void swap(Integer num1, Integer num2) throws Exception {
Field field = num1.getClass().getDeclaredField("value");//獲取類的value
field.setAccessible(true);//修改訪問權限
Object tmp = field.get(num1);//獲取指針所指向的對象的值,而不是獲取引用值
field.set(num1, num2);//將num1的引用所指向的a的值設置爲,num2所指向的b的值
field.set(num2, tmp);//將tmp的值設置給,num2所指向的b的值
}
}
num1.getClass拿到參數對應的類
在通過getDeclaredField("value")拿到該類的value屬性
field.get(num1)獲取這個值的引用所指向的對象的具體的值,也就是num1指向的a的值1
field.set是將num1的值設置爲num2的值
然後再講tmp的值設置爲num1的值
這樣就實現了值的互換