你好杰米 2018-08-07 06:24 采纳率: 87.5%
浏览 6998
已采纳

【JAVA】将参数传入方法,方法内改变了值,出来后又变成null????

图片说明

如图所示我创建了两个list,然后下面将它们放到了方法里面,方法里面我就不截图了,就是调用mybatis的方法,然后进行赋值,我单元测试的时候,进到方法里面,确实赋值了,但是在退出方法的时候,直接又变回了null???

不是引用传递么,为什么感觉变成局部的了??

调用的方法是void无返回值的方法,求解,以前用责任链模式也是对象当参数穿来穿去的,也没出现这种事啊???

  • 写回答

14条回答 默认 最新

  • sunsloth 2018-08-07 08:34
    关注

    因为你传的是null,null是没有地址的,然后你新new出的对象,对新的对象进行的赋值;
    引用传递的意思是把引用的地址传递过去,然后对引用对应的地址的对象进行修改,
    因为变量名称与实例的指向关系没变,修改了实例,变量的使用时的内容自然就变了。
    你可以先把pList,cList 实例化,然后传入通过add方法进行赋值修改。
    不能用=赋值,
    你的程序应该是路线1,null是没有地址的,但是如果是路线2的话,可以把p1,p2传递进去赋值

    图片说明
    测试代码:
    public static void main(String[] args) {
    List pList = new ArrayList();
    List cList = new ArrayList();
    setParams(pList, cList);
    System.out.println(pList);
    System.out.println(cList);
    }

    public static void setParams(List<ProductV0> pList, List<ProductV0> cList){
        ProductV0 p1 = new ProductV0();
        p1.setProId(1);
        p1.setProName("bread");
        p1.setType("food");
        p1.setDesc("delicious");
        List<ProductV0> aaa = new ArrayList<ProductV0>();
        aaa.add(p1);
        pList = aaa;
        cList.add(p1);
    }
    
    static class ProductV0{
        int proId;
        String proName;
        String type;
        String desc;
        public int getProId() {
            return proId;
        }
        public void setProId(int proId) {
            this.proId = proId;
        }
        public String getProName() {
            return proName;
        }
        public void setProName(String proName) {
            this.proName = proName;
        }
        public String getType() {
            return type;
        }
        public void setType(String type) {
            this.type = type;
        }
        public String getDesc() {
            return desc;
        }
        public void setDesc(String desc) {
            this.desc = desc;
        }
    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(13条)

报告相同问题?

悬赏问题

  • ¥15 商城生产日期批次库存问题
  • ¥15 esp8266控制共阳极wrgb灯板无法关闭所有led灯
  • ¥100 python读取速度问题
  • ¥15 stm32f407使用DMA问题
  • ¥15 您好 这个API接口该怎么弄 网站搭建好了 API也有 现在就不知道该怎么填写API 不知道怎么用
  • ¥88 用uniapp写一个多端的程序,用到高德地图,用高德的JSAPI吗?
  • ¥20 关于#c++#的问题:水果店管理系统
  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来
  • ¥15 完成虚拟机环境配置,还有安装kettle