[Java SE]Java方法的值傳遞【待續】
阿新 • • 發佈:2020-11-06
1 實驗原始碼
關鍵方法: updateUser*()
import org.junit.Test; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; public class MainTest { @Test public void testModifyInStreamForEachOfList1() { ArrayList<User> list = new ArrayList<User>(); User user = new User(); user.name = "wahahahhaha"; list.add(user); list.stream().forEach(item -> { item.name = "efisgbdfjsb";// 為已設定值的欄位 更新 值 item.age = 4; // 為未設定值的欄位 設定 新值 }); list.stream().forEach(item -> { System.out.println(item); }); //output: name:efisgbdfjsb/tage:4 } @Test public void testModifyInStreamForEachOfList2() { ArrayList<User> list = new ArrayList<User>(); User user = new User(); user.name = "wahahahhaha"; list.add(user); list.stream().forEach(item -> { item = updateUserByOldObject(item); }); list.stream().forEach(item -> { System.out.println(item); }); //output: name:efisgbdfjsb/tage:4 } @Test public void testModifyInStreamForEachOfList3() { ArrayList<User> list = new ArrayList<User>(); User user = new User(); user.name = "wahahahhaha"; list.add(user); list.stream().forEach(item -> { updateUserByOldObject(item); }); list.stream().forEach(item -> { System.out.println(item); }); //output: name:efisgbdfjsb/tage:4 } @Test public void testModifyInStreamForEachOfList4() { ArrayList<User> list = new ArrayList<User>(); User user = new User(); user.name = "wahahahhaha"; list.add(user); list.stream().forEach(item -> { item = updateUserByNewObject(user); }); list.stream().forEach(item -> { System.out.println(item); }); //output: name:wahahahhaha/tage:0 } public User updateUserByOldObject(User user) {//在 舊物件上做修改,然後返回 user.name = "efisgbdfjsb";// 為已設定值的欄位 更新 值 user.age = 4; // 為未設定值的欄位 設定 新值 return user; } public User updateUserByNewObject(User user) {//在 new 的新物件上做修改,然後返回 User newUser = new User(); newUser.name = "efisgbdfjsb";// 為已設定值的欄位 更新 值 newUser.age = 4; // 為未設定值的欄位 設定 新值 return newUser; } } class User{ public String name; public int age; @Override public String toString(){ return "name:"+name+"/t"+"age:"+age; } }