java - 类中的 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 编程很陌生,但我已经掌握了它,谢谢你的帮助!
解决方案
你的逻辑在某种程度上是有缺陷的。
如果disconnect()
确实有一个空的身体,那么首先有那个方法有什么意义?!你看:代码传达意图。你的代码......至少对我来说传达了混乱。
如果disconnect()
确实“拆除”了您的连接,那么您将拆除初始connections
数组中的一个元素。因此其他客户端无法再使用该连接。那么你的经理的目的是什么,并在那个“数组池”中收集连接?一旦你引用了一个数组成员“public”,任何客户端都可以自由使用disconnect
. 那么其他客户呢?
所以无论哪种方式,你的逻辑似乎都被打破了。
我的建议:如果需要真正的拆卸,那么考虑使用try-with-resources。否则,只需忘记有关“断开连接”的部分。从您的界面中删除该方法,并忘记客户端无缘无故地调用 NOOP(空)方法。
推荐阅读
- javascript - 如何在此代码中添加 (+/-) 按钮编号增量器
- c - 向结构 C/C++ 添加另一个变量时出现 Malloc 错误
- javascript - 如何突出显示与结果匹配的表行
- python - 将包含列表列表的 Python Dict 转换为 pandas Dataframe
- c++ - 你怎么能定义一些东西而不给它任何类型,比如整数?
- c# - 如何一次性在内存集合中与其后备数据库表同步
- swift - 关于这段代码的问题对字典来说是非常熟悉的。这种代码叫什么?
- python - 使用 Selenium 选择一个 ClassName,其中有多个具有相同名称的 ClassName
- python - 从带有 URL 的网站下载图像并按描述排序
- visual-studio-code - html中的自动完成css类在vs代码中不起作用