首页 > 解决方案 > 类中的 JAVA setReferenceNull 方法

问题描述

我已经没有想法如何在 Connection 类中实现 void disconnect 方法,以便以一种简单的方式来说明这一点:有一个类 Connection 可以在另一个类 ConnectionManagment 中使用更改的 Singleton 设计模式创建最多 x(由变量定义)Connection 实例它看起来像这样:

Connection[] connections = {
    Connection.createConnection(),
    Connection.createConnection()
};

然后主要我使用 connect() 方法从连接中获取引用,例如:

Connection c1 = ConnectionManagment.connect();


现在问题部分来了我如何在 Connection 类中创建一个 void setReferenceNull() 方法,因为在 Java 中所有内容都是按值传递的,我知道可以使用以下方法来归档它:

public Connection disconnect()
{
    return null;
}

并像这样使用它:

c1 = c1.disconnect();

但在我看来,它看起来像垃圾,而

c1.disconnect();

看起来好多了,我对 Java 编程很陌生,但我已经掌握了它,谢谢你的帮助!

标签: javareference

解决方案


你的逻辑在某种程度上是有缺陷的。

如果disconnect()确实有一个空的身体,那么首先有那个方法有什么意义?!你看:代码传达意图。你的代码......至少对我来说传达了混乱。

如果disconnect()确实“拆除”了您的连接,那么您将拆除初始connections数组中的一个元素。因此其他客户端无法再使用该连接。那么你的经理的目的是什么,并在那个“数组池”中收集连接?一旦你引用了一个数组成员“public”,任何客户端都可以自由使用disconnect. 那么其他客户呢?

所以无论哪种方式,你的逻辑似乎都被打破了。

我的建议:如果需要真正的拆卸,那么考虑使用try-with-resources。否则,只需忘记有关“断开连接”的部分。从您的界面中删除该方法,并忘记客户端无缘无故地调用 NOOP(空)方法。


推荐阅读