Java变量无法从一个类加到另一个类

时间:2015-05-25 04:52:35

标签: java

我有这个班级

public class vartotojas {
String elpastas, slaptazodis;
public vartotojas (String elpastas,String slaptazodis)
  {
    this.elpastas = elpastas;
    this.slaptazodis = slaptazodis;
  }
}

我正在尝试在这个类中使用变量

public class saugykla {
  public static final String SP_name = "vartotojoduomenys";
  SharedPreferences saugykladb;
  public saugykla (Context context){
    saugykladb = context.getSharedPreferences(SP_name, 0);
  }
  public void saugoti (vartotojas user){
    SharedPreferences.Editor SP_editor = saugykladb.edit();
    SP_editor.putString("elpastas", vartotojas.elpastas);
  }
}

我在最后一行vartotojas.elpastas出错了我在vartotojas之后放点后我做错了我没有选择elpastas的选项我在youtube上暂停了教程我完全按照youtubube进行了保存没错......我收到错误:error: non-static variable elpastas cannot be referenced from a static context

3 个答案:

答案 0 :(得分:1)

将类名替换为实例名称:

SP_editor.putString("elpastas", vartotojas.elpastas);

                         |
                         V

SP_editor.putString("elpastas", user.elpastas);

为了能够通过类名访问类方法,该方法必须是静态的。

答案 1 :(得分:0)

首先,您应该熟悉Java命名约定,它会使您的代码更具可读性(例如,让您的类名以大写字母开头)。

其次,当您应该引用实例名称时,您将引用类名。在您的情况下,user作为参数传递给方法,因此:

public void saugoti (vartotojas user){
    SharedPreferences.Editor SP_editor = saugykladb.edit();
    SP_editor.putString("elpastas", user.elpastas);
}

但这还不够。 user无法访问elpastas变量。您需要将其设置为非私有(我不确定他们在您的代码中包含哪些软件包),或者更优选的方式,将一些getter添加到您的vartotojas类。

public class vartotojas {

    String elpastas, slaptazodis;

    public vartotojas (String elpastas,String slaptazodis) {
        this.elpastas = elpastas;
        this.slaptazodis = slaptazodis;
    }

    public String getElpstas() {
        return this.elpastas;
    }

    public String getSlaptazodis() {
        return this.slaptazodis;
    }
}

然后,您需要通过getter访问变量:

public void saugoti (vartotojas user){
    SharedPreferences.Editor SP_editor = saugykladb.edit();
    SP_editor.putString("elpastas", user.getElpastas());
}

P.S。您还应该考虑是否要添加setter方法,或者构造函数中的初始化是否足够。

希望这有帮助。

答案 2 :(得分:0)

你很接近,但对局部变量的误解很小。

public void saugoti (vartotojas user){
    SharedPreferences.Editor SP_editor = saugykladb.edit();
    SP_editor.putString("elpastas", vartotojas.elpastas);
}

在方法中为类user本地化变量vartotojas user时 为什么你使用像vartotojas.elpastas这样的行改变:

SP_editor.putString("elpastas", user.elpastas);

更多

如何访问此变量,例如class.field read static Here。这基本上是全新的概念,你必须知道它(如果你不是)

另外,我建议您阅读并关注Java Code Conventions