Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在两个类之间传递数据_Java_Generics - Fatal编程技术网

Java在两个类之间传递数据

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;

我有一个非常愚蠢和基本的问题,但我似乎无法回避。我试图在3个类之间传递数据,因此我采用了以下方法:

甲级

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就足够了,只要用户按下按钮,就会调用该侦听器。