Java的。 Get / Set返回null

时间:2015-01-26 14:22:54

标签: java get null set

第一篇文章和第一个问题。

我是一名java初学者,所以如果我的问题非常基本,我会提前道歉,但我已经尝试了2天在互联网和StackOverFlow上找到答案而没有成功

我想做的事情:我想“设置”变量的值,然后多次“获取”它。

发生了什么:第一次“获取”它,它(正确地)返回我初始化的值。以下时间它返回“null”

这里的代码 1)主要课程

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)带有动作的课程

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)带变量的类以及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)当我运行main时,结果是

test
null

(我想要的是测试和测试)

我不希望将变量存储在数据库或文件中,除非有必要,因为我希望将其随时工作

如果你能帮助我,我真的很感激 非常感谢

2 个答案:

答案 0 :(得分:0)

您的两种方法execute_var_to_set_e_get1execute_var_to_set_e_get2分别创建了var_to_set_e_get类的不同对象。您只在其中一个中设置属性的值,因此当然在另一个中它将为null。

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

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);
} 

答案 1 :(得分:0)

在每次调用方法execute_var_to_set_e_get1execute_var_to_set_e_get2时,您会创建不同的对象。

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

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

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