java中模拟js中方法传递对象

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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值