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。现在很有魅力。谢谢