是否可以通过包中的所有类使用变量?

时间:2015-01-16 10:17:06

标签: android variables

我想在包下的所有类中使用变量值。我应该在哪里声明该变量?

7 个答案:

答案 0 :(得分:2)

您可以将任何类中的变量声明为static。

public class SomeClass {

  static Object yourVariable;

}

并从其他类访问它:

public class OtherClass {

  public void method(){
    Object local = SomeClass.yourVariable;
  }

}

使用变量前面没有修饰符(没有公共,没有私有)来使包可见。 More about modifiers and visibility here

答案 1 :(得分:1)

创建一个具有静态变量的类。 代码如下..

public class ConstantClass {

        static String strr = "Your value";
}

您可以使用

访问此变量
ConstantClass.strr = "Changed value";

在你的任何一个班级。

答案 2 :(得分:1)

如果您不添加隐私修饰符,则变量是包私有,这意味着它可以被同一个包中的所有类使用。这解决了您的问题

此外,static修饰符使变量可用于类而不是对象。对于该类的所有对象,只有一个可能的变量实例。

public class MyClass {

    //visible for all classes in the same package
    int variable;

    //same as above, but static
    static int variable;
}

如果它是静态变量,则调用方式:

MyClass.variable

答案 3 :(得分:0)

如果您希望能够从应用程序的任何位置访问变量,则必须使用静态变量。

在一个简单的例子中,你会像这样声明你的变量。

public class Example {
     public static string EXAMPLE_STRING = "example";
}

然后,您可以通过类访问该变量,如下所示:

Example.EXAMPLE_STRING

如果您想限制对一个软件包的访问,请删除public关键字。

答案 4 :(得分:0)

您可以使用共享首选项类。这是使用共享首选项

的示例
public static final String MyPreferences = "MyPrefs" ;
SharedPreferences sharedPreferences;
Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    sharedPreferences = getSharedPreferences(MyPreferences, Context.MODE_PRIVATE);
    editor = sharedPreferences.edit();
}

//For Save Value (But the value is string)
public void saveValue(String code, String value) {
    editor.putString(code, value);
    //Dont forget this method must be typed, too... 
    editor.apply();
}

//For Get Value (But the value is string)
public String getValue(String code) {
    return sharedPreferences.getString(code, "");
}

答案 5 :(得分:0)

最好的解决方案是覆盖应用程序类并在那里初始化变量。您可以使用getApplication()从每个活动中获取应用程序,并可以访问全局变量。你需要一个示例代码吗? 积极的效果是你不必处理静态的东西。

答案 6 :(得分:-1)

您可以在任何类中将其声明为 public static 变量。请参阅this link for a small explanation