gpt4 book ai didi

java - 调用实例方法而不指定实例名称

转载 作者:行者123 更新时间:2023-12-01 12:15:38 26 4
gpt4 key购买 nike

我有两个类 - ChatroomUser

Chatroom 具有从 Chatroom 数组列表中删除指定用户的功能。

public void removeUser(User u)
{
if(userlist.contains(u)){
userlist.remove(u);
}
}

User类中有一个名为leaveRoom的方法。此方法将 User 参数转发到 Chatroom 实例的 removeUser 方法。

public void leaveRoom(final Chatroom name)
{
name.removeUser(this);
}

但是,它需要将 Chatroom 类的实例名称作为参数提供给函数。使用 blueJ 在从 User 实例调用方法时,我必须将其输入到窗口中。

现在我一直想知道是否有一种方法可以在 Chatroom 的正确实例中调用正确的方法,而无需将实例名称指定为参数?

编辑:

一名用户一次只能进入一个聊天室。目标是 leaveRoom() 当前聊天室,而无需指定它。

最佳答案

如果 User 实例只能位于一个 Chatroom 中,您可以在 中保留对该 Chatroom 的引用User 类,然后您就不必向 leaveRoom 提供任何参数。

但是,如果一个User可以同时在多个Chatroom中,则必须告诉leaveRoom方法离开哪个房间,因此参数是必需的。

如果用户一次只能在一个房间中,则代码可能如下所示:

public class User {

...
private ChatRoom currentRoom;
...
public void leaveRoom()
{
if (currentRoom != null) {
currentRoom.removeUser(this);
currentRoom = null;
}
}
....
}

关于java - 调用实例方法而不指定实例名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27025186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com