Java在两个类之间传递数据
我有一个非常愚蠢和基本的问题,但我似乎无法回避。我试图在3个类之间传递数据,因此我采用了以下方法: 甲级Java在两个类之间传递数据,java,generics,Java,Generics,我有一个非常愚蠢和基本的问题,但我似乎无法回避。我试图在3个类之间传递数据,因此我采用了以下方法: 甲级 public class GroupChat { public String message; public String myId; public String otherID; public GroupChat() { } public String getOtherID() { return otherID;
public class GroupChat {
public String message;
public String myId;
public String otherID;
public GroupChat() {
}
public String getOtherID() {
return otherID;
}
public void setOtherID(String otherID) {
this.otherID = otherID;
}
public String getMyId() {
return myId;
}
public void setMyId(String myId) {
this.myId = myId;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
B类-在单击按钮时生成数据
GroupChat chat = new GroupChat();
chat.setParticipants(participants);
chat.setMyId(userId);
chat.setOtherID(id);
chat.setMessage(message);
当我在GroupChat类中打印出这些变量的日志时,一切都很完美
但是,当我尝试使用getter将数据获取到类C(我需要它们)时,它们返回的是空值
C类
GroupChat chat = new GroupChat();
chat.getMessage(),
chat.getItemView(),
chat.getMyId(),
chat.getOtherID());
我甚至尝试在GroupChat类中记录数据。当我使用setter输入数据时,一切都很好,但是当在getter上记录数据时,它们返回null。GroupChat类中一定存在使变量为空的内容
有人能给我指一下正确的方向吗?
非常感谢。没有完整的代码很难得出结论。我能看到的唯一问题是,在这两种情况下使用不同的实例。在C类中,您创建了一个新的GroupChat,而不是传递在B类中创建的GroupChat。如果没有完整的代码,很难得出结论。我能看到的唯一问题是,在这两种情况下使用不同的实例。在C类中,您将创建一个新的GroupChat,而不是传递在B类中创建的GroupChat。每次调用时:
GroupChat chat = new GroupChat();
您正在创建具有默认值(例如0、null)的新对象
如果要使用对象“B”,必须从调用setters的函数返回它
例如
然后,您可以在以后的代码中使用此对象:
GroupChat result = getDataAfterButtonPress();
每次打电话时:
GroupChat chat = new GroupChat();
您正在创建具有默认值(例如0、null)的新对象
如果要使用对象“B”,必须从调用setters的函数返回它
例如
然后,您可以在以后的代码中使用此对象:
GroupChat result = getDataAfterButtonPress();
您确定使用的是同一个
GroupChat
实例吗?如果在两个位置都使用new
,则处理的是两个不同的实例。在其中一个上设置值不会影响另一个。我相信您需要在C类中设置值或传递您的GroupChat对象。ahaaaa,那么我需要做什么才能拥有相同的GroupChat实例?您确定使用的是相同的GroupChat实例吗?如果在两个位置都使用new
,则处理的是两个不同的实例。在其中一个上设置值不会影响另一个。我相信您需要在C类中设置值或传递您的GroupChat对象。ahaaaa,那么我需要做什么才能拥有相同的GroupChat实例?如何使用相同的实例?在C类中,在构造函数中添加一个setter或一个参数。确保不重用新实例。您可以新建ClassC(existingInstance)或新建ClassC.setChat(existingInstance)。如何使用相同的实例?在C类中,在构造函数中添加一个setter或一个参数。确保不重用new。您可以新建ClassC(existingInstance)或新建ClassC.setChat(existingInstance)。但是如何将getDataAfterButtonPress()传递给另一个类?要回答这个问题,我需要更多关于体系结构的详细信息。但是,我想,从监听器返回/传递GroupChat就足够了,只要用户按下按钮,监听器就会调用它。但是我如何才能将getDataAfterButtonPress()传递给另一个类呢?要回答这个问题,我需要更多关于体系结构的细节。但是,我想,只要从侦听器返回/传递GroupChat就足够了,只要用户按下按钮,就会调用该侦听器。