Java。 Get/Set returns 空

Java. Get/Set returns null

第一个 post 和第一个问题。

我是一个 java 初学者,所以如果我的问题很基础,我提前道歉,但我已经尝试了 2 天在互联网和 Whosebug 上找到答案,但没有成功

我想做的事:我想 "set" 一个变量的值,然后 "get" 它返回多次。

发生了什么:我第一次 "get" 它,它(正确地)returns 我初始化的值。以下时间 returns "null"

这里是代码 1) 主要 class

public class Provasetgetaltraclass {

    public static void main(String[] args) {
        set_e_get_1 set_e_get_1Obj = new set_e_get_1();         
        set_e_get_1Obj.execute_var_to_set_e_get1();
        set_e_get_1Obj.execute_var_to_set_e_get2();
    }    
}

2) class 与操作

public class set_e_get_1 {

    public void execute_var_to_set_e_get1(){
        var_to_set_e_get var_to_set_e_getObj = new var_to_set_e_get(); 
        var_to_set_e_getObj.setname("test"); 
        System.out.println(var_to_set_e_getObj.getname());
    }

    public void execute_var_to_set_e_get2(){
        var_to_set_e_get var_to_set_e_getObj = new var_to_set_e_get(); 
        System.out.println(var_to_set_e_getObj.getname());
    }
}

3) class 变量和 set 和 get 方法

public class var_to_set_e_get {
    private String name; 

    public void setname (String new_name){
        name = new_name; 
    }

    public String getname (){
        return name; 
    }
}

4)结果,当我运行主的时候,是

test
null

(我要的是测试测试)

除非必要,否则我不想将变量存储在数据库或文件中,因为我想让它在运行中工作

如果你能帮助我,我将不胜感激 非常感谢

您的两个方法 execute_var_to_set_e_get1execute_var_to_set_e_get2 各自创建了 var_to_set_e_get class 的不同对象。您仅在其中一个中设置了 属性 的值,因此当然在另一个中它将为 null。

如果您希望存储在第一个对象中的值在第二个方法中可用,您的第一个方法必须 return 它创建的对象,第二个方法应该接受该对象:

public var_to_set_e_get execute_var_to_set_e_get1(){
    var_to_set_e_get var_to_set_e_getObj = new var_to_set_e_get(); 
    var_to_set_e_getObj.setname("test"); 
    System.out.println(var_to_set_e_getObj.getname());
    return var_to_set_e_getObj;
}

public void execute_var_to_set_e_get2(var_to_set_e_get var_to_set_e_getObj){ 
    System.out.println(var_to_set_e_getObj.getname());
}


public static void main(String[] args) {
    set_e_get_1 obj = new set_e_get_1();         
    var_to_set_e_get v = obj.execute_var_to_set_e_get1();
    obj.execute_var_to_set_e_get2(v);
} 

发生的情况是,在每次调用方法 execute_var_to_set_e_get1execute_var_to_set_e_get2 时,您都在创建不同的对象。

在第一个中,您将 name 设置为 String,但在最后一个中,您没有这样做。

因此,它将是 null(默认情况下)。

注意: 您所描述的行为属于 static 属性。如果您将 name 声明为 static,它将在所有实例之间共享。