import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
/**
* js方法中传递对象,是在方法中每次都是一个新的对象
* java方法中传递list,是所有的方法都是同一个list
*/
public class JavaJSTest {
/**
* 并不是k-v对
* 而是,第一个值,第二个值
*/
private class Pair {
// public Object key;
// public Object value;
public Object first;
public Object second;
public Pair(Object first, Object second) {
this.first = first;
this.second = second;
}
// public void add(String first, String second){
// }
/**
* 一次添加一个值
* @param value
* @param oldPair
* @return
*/
public Pair add(Object value, Pair oldPair){
return new Pair(value, oldPair);
}
//模拟list.add
// public boolean add(Object value){
// Pair p = new Pair(value, this);
// }
}
public void rec(int i, Pair pair){
if (i == 5){
return;
} else {
System.out.println("before i = " + i);
System.out.println("before pair is = " + new Gson().toJson(pair));
i++;
//关键点是这里
Pair newPair = new Pair(i, pair);
//不是
// Pair newPair = pair.add(i, pair);
rec(i, newPair);
System.out.println("after i = " + i);
System.out.println("after pair is = " + new Gson().toJson(newPair));
}
}
public void test(){
new JavaJSTest().rec(0, new Pair(0, 0));
}
public static void main(String[] args) {
new JavaJSTest().test();
System.out.println("-------------");
new JavaJSTest().javaRec(0, new ArrayList<Integer>());
}
public void javaRec(int i, List<Integer> list){
if (i == 5){
return;
} else {
System.out.println("before i = " + i);
System.out.println("before list is = " + new Gson().toJson(list));
i++;
list.add(i);
//不是
// Pair newPair = pair.add(i, pair);
javaRec(i, list);
System.out.println("after i = " + i);
System.out.println("after list is = " + new Gson().toJson(list));
}
}
}
运行结果:
before i = 0
before pair is = {"first":0,"second":0}
before i = 1
before pair is = {"first":1,"second":{"first":0,"second":0}}
before i = 2
before pair is = {"first":2,"second":{"first":1,"second":{"first":0,"second":0}}}
before i = 3
before pair is = {"first":3,"second":{"first":2,"second":{"first":1,"second":{"first":0,"second":0}}}}
before i = 4
before pair is = {"first":4,"second":{"first":3,"second":{"first":2,"second":{"first":1,"second":{"first":0,"second":0}}}}}
after i = 5
after pair is = {"first":5,"second":{"first":4,"second":{"first":3,"second":{"first":2,"second":{"first":1,"second":{"first":0,"second":0}}}}}}
after i = 4
after pair is = {"first":4,"second":{"first":3,"second":{"first":2,"second":{"first":1,"second":{"first":0,"second":0}}}}}
after i = 3
after pair is = {"first":3,"second":{"first":2,"second":{"first":1,"second":{"first":0,"second":0}}}}
after i = 2
after pair is = {"first":2,"second":{"first":1,"second":{"first":0,"second":0}}}
after i = 1
after pair is = {"first":1,"second":{"first":0,"second":0}}
-------------
before i = 0
before list is = []
before i = 1
before list is = [1]
before i = 2
before list is = [1,2]
before i = 3
before list is = [1,2,3]
before i = 4
before list is = [1,2,3,4]
after i = 5
after list is = [1,2,3,4,5]
after i = 4
after list is = [1,2,3,4,5]
after i = 3
after list is = [1,2,3,4,5]
after i = 2
after list is = [1,2,3,4,5]
after i = 1
after list is = [1,2,3,4,5]
java中模拟js中方法传递对象
最新推荐文章于 2023-02-12 20:53:36 发布