Java 在不指定实例名称的情况下调用实例方法

Java 在不指定实例名称的情况下调用实例方法,java,class,methods,parameters,Java,Class,Methods,Parameters,我有两门课-聊天室和用户 聊天室具有从聊天室数组列表中删除指定用户的功能 public void removeUser(User u) { if(userlist.contains(u)){ userlist.remove(u); } } 在类User中有一个名为leaveRoom的方法。此方法将User参数转发给聊天室实例的removeUser方法 public void leaveRoom(final Chatroom name) { name.re

我有两门课-
聊天室
用户

聊天室
具有从
聊天室
数组列表中删除指定用户的功能

public void removeUser(User u)
{
    if(userlist.contains(u)){
        userlist.remove(u);
    }
}
在类
User
中有一个名为
leaveRoom
的方法。此方法将
User
参数转发给
聊天室
实例的
removeUser
方法

public void leaveRoom(final Chatroom name)
{
    name.removeUser(this);
}
但是,它要求将
聊天室
类的实例名作为参数提供给函数。在使用blueJ时,当从
User
实例调用该方法时,我必须将其输入窗口

现在我一直在想,是否有一种方法可以在
聊天室的正确实例中调用正确的方法,而不必将实例名称指定为参数

编辑:


一个用户一次只能在一个聊天室中。目标是
leaveRoom()
不必指定当前聊天室。

如果
用户
实例只有一个
聊天室
,则可以在
用户
类中保留对该
聊天室
的引用,这样,您就不必向
leaveRoom
提供任何参数

但是,如果一个
用户
可以同时在多个
聊天室
中,则必须告诉
leaveRoom
方法要离开哪个聊天室,因此该参数是必需的

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

public class User {

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

我不确定问题是什么。定义事物的方式必须将
聊天室
传递给
leaveRoom
方法。你的另一个选择是将
用户
传递给
聊天室
removeUser
方法。问题是如果可能的话,如何将用户所在的当前聊天室传递给leaveRoom方法。一个用户一次只能在一个聊天室中。目标是在不必指定的情况下离开聊天室(),我已经尝试过了。(聊天室不是写聊天室顺便说一句)它不工作。在我使用leaveRoom()函数后,用户仍在聊天室。@RomanRutkowski当
用户加入聊天室时,您是否初始化
currentRoom
?没关系。我指定了joinRoom()以将要合并的房间保存为currentRoom。现在很有魅力。谢谢