Java 如何获取已在另一个类中设置的instance值?

Java 如何获取已在另一个类中设置的instance值?,java,object,instance,Java,Object,Instance,我是Java新手。我有3个类:1-DataHolder 2-SetToDateHolder 3-GetFromDataHolder;在“SetToDateHolder”类中,我将值设置为dataholder对象,并尝试在“GetFromDataHolder”类中访问它,但它得到了null值,我知道这是因为创建了新实例。你能帮我认识到我可以得到我在另一个类中设置的实例的值吗 这些是课程: public class DataHolder { private String myName;

我是Java新手。我有3个类:1-DataHolder 2-SetToDateHolder 3-GetFromDataHolder;在“SetToDateHolder”类中,我将值设置为dataholder对象,并尝试在“GetFromDataHolder”类中访问它,但它得到了null值,我知道这是因为创建了新实例。你能帮我认识到我可以得到我在另一个类中设置的实例的值吗

这些是课程:

public class DataHolder {

    private String myName;

    public String getMyName() {
        return myName;
    }

    public void setMyName(String myName) {
        this.myName = myName;
    }
}

public class SetToDataHolder {

    public static void main(String[] args) {
        DataHolder dataHolder = new DataHolder();
        dataHolder.setMyName("Wesley");
    }

}

public class GetFromDataHolder{
    
    public static void main(String[] args) {
        DataHolder dataHolder = new DataHolder();
        System.out.println(dataHolder.getMyName());
    }

}


我真的不明白为什么您需要另外两个类,因为您的DataHolder类中已经有了getter/setter,但下面是您应该如何继续您的逻辑:

public class DataHolder {

    private String myName;

    public String getMyName() {
        return myName;
    }

    public void setMyName(String myName) {
        this.myName = myName;
    }
}

public class SetToDataHolder {
    
    private DataHolder dataHolder;

    public SetToDataHolder(DataHolder dataHolder){
        this.dataHolder = dataHolder;
    }

    public void setMyName(String myName) {
        this.dataHolder.setMyName(myName);
    }
}

public class GetFromDataHolder{
    
    private DataHolder dataHolder;

    public GetFromDataHolder(DataHolder dataHolder){
        this.dataHolder = dataHolder;
    }

    public String getMyName() {
        this.dataHolder.getMyName();
    }
}

public class MainClass{
    
    public static void main(String[] args){
        DataHolder dataHolder = new DataHolder();

        SetToDataHolder setToDataHolder = new SetToDataHolder(dataHolder);
        setToDataHolder.setMyName("Wesley");

        GetFromDataHolder getFromDataHolder = new GetFromDataHolder(dataHolder);
        System.out.println(getFromDataHolder.getMyName());
    }
}

其思想是,您的SetToDataHolder和GetFromDataHolder可以访问相同的DataHolder实例。

这两个DataHolder实例彼此不相关。如果要为所有实例设置值,请使用静态变量。但是,这不仅仅是在另一个方法中,也可以说是在另一个应用程序中。请确切地说明您是如何运行代码的。@tgdavies它们都是主要的方法,我认为他是如何运行它们的。每次您运行JVM,使用
java SetToDataHolder
java GetFromDataHolder
您将从一张“白板”开始。新进程中不会存在在上一进程中创建的对象。谢谢您的回答。实际上,我正在验证数据库中的数据。所以我需要dataHolder在SetToDataHolder类中保存数据,然后我在另一个类中获取数据,并与原始数据进行比较以进行断言。我只想在不同的类中完成它,而不使用第三方记录器,如Excel或CVS文件。这样做可能吗?在本例中,我确实有3个类,一个名为“Entity”(保存从数据库获取的数据),一个名为“EntityDAO”(从数据库获取数据并返回一个列表),最后一个类名为“DataIntegrityChecker”(使用特定的方法验证获取的实体(List entities))。这是一个例子,您可以自由思考另一种方法。DAO是用于从数据源获取数据的类的常规名称。实体是保存数据的类的常规名称,而另一个类是我想象的结果。