首页 新闻 会员 周边

Java 静态方法中 如何将对象置为空?

0
悬赏园豆:5 [已解决问题] 解决于 2021-01-19 17:41

1 静态工具方法
public class RedisLockUtils {
public static void getLockFail(Order order){
order = null;
}
}
2 main方法调用静态方法
public static void main(String[] args) {
  Order order = new Order();
  order.setPayOrderNo("222");
  RedisLockUtils.getLockFail(order);
  System.out.println(order);
}
3 打印结果
Order{orderNo='null', payOrderNo='222'}
疑问:
为什么打印结果对象有数据而不是null呢?
有没有办法在静态工具方法中将对象置为空/null?

ysloong的主页 ysloong | 初学一级 | 园豆:176
提问于:2021-01-19 17:04

豆豆给我啊,大哥,我这回答没问题了

困难户 3年前
< >
分享
最佳答案
0

你只是把方法中的参数的引用设置成null了好不好

收获园豆:5
yytxdy | 小虾三级 |园豆:1680 | 2021-01-19 17:31

是我对对值传递/引用传递还是没有理解透彻

ysloong | 园豆:176 (初学一级) | 2021-01-19 17:34

@ysloong: 我还是没懂你们在说什么,java只有值传递啊,没有引用传递

困难户 | 园豆:168 (初学一级) | 2021-01-19 17:36

@困难户: 我是想实现在方法中将对象置为空的,但是java只有值传递(引用传递也只地址值传递),所以没有办法实现在方法内部将对象置为空这个问题.我正在研究如何把豆给你,稍等

ysloong | 园豆:176 (初学一级) | 2021-01-19 17:39

@ysloong: 我正在研究如何把豆给你,稍等???

困难户 | 园豆:168 (初学一级) | 2021-01-19 17:39

@ysloong: 跟你开玩笑的,我刚才一个入职的问题给了50豆

困难户 | 园豆:168 (初学一级) | 2021-01-19 17:40

@困难户: 我仔细想了下,还是二楼回答更准确些,还是给他吧.这样比较公平,(没有办法评分豆,抱歉啦)

ysloong | 园豆:176 (初学一级) | 2021-01-19 17:43
其他回答(2)
0

没懂意思,这有先有后的啊,静态的始终优先级最高,没办法在其他地方赋值再静态置空

困难户 | 园豆:168 (初学一级) | 2021-01-19 17:13

我搞懂了,当order = null;时其实是将order指向一个新的地址(空对象地址)
看的这个:
https://www.cnblogs.com/sum-41/p/10799555.html

支持(0) 反对(0) ysloong | 园豆:176 (初学一级) | 2021-01-19 17:31
0

当order = null;时其实是将内部的order指向一个新的地址(空对象地址)
但是不会对原来的对象产生影响.
public static void getLockFail(Order order){
order.setOrderNo("333");
// 指向了新的地址值 null
order = null;
System.out.println(order);
}

打印结果:
null
RegistryQuotaQuickPayByStagesDto{orderNo='333', payOrderNo='222'}

ysloong | 园豆:176 (初学一级) | 2021-01-19 17:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册