Java:将非静态变量分配给静态变量

时间:2015-08-07 18:54:38

标签: java variables scope

我使用名为GlobalVar的类来存储整个应用程序所需的一些全局变量。该课程看起来像这样:

public class GlobalVar {

    MyProps props = new MyProps();

    public GlobalVar() throws Exception
    {

    }

    public static String PPFirstName = "Kim";
    public static String PPLastName = "Smith";


    String zip = props.Props.getIPZip("IPZip");
    public static String IPZip = zip;

}

然而,在最后两行中,我收到错误:

Cannot assign non static variable to static variable. 

我理解问题的根源(因为zip是非静态的,IPZip是静态的)我的问题是:有什么方法可以解决这个问题吗?即,任何方式将"Props"中的值集分配给"IPZip" static var?

注意:使用此方法的目的是我能够在应用程序的任何位置使用语法GlobalVar.IPZip

2 个答案:

答案 0 :(得分:0)

您正在创建#errors { float:left; margin-left:4.5%; text-align:left; color:red; white-space: nowrap; } 的实例,然后调用其非静态MyProps方法。您不能将非静态方法的结果分配给静态变量。

相反,您需要将getIPZip方法转换为getIPZip类的静态方法,然后您可以将其结果分配给yor MyProps变量。

IPZip

然后,您可以使用public static String IPZip = MyProps.getIPZip("IPZip"); 在任何地方访问IPZip

但是,如果您将GlobalVar.IPZip方法设为静态,则向getIPZip类添加另一个变量有点不必要,因为您只需在代码中的任何位置调用GlobalVar

另一种选择是将MyProps.getIPZip("IPZip");方法移到您的getIPZip类中并将其设为静态方法,然后您可以调用GlobalVar

答案 1 :(得分:0)

我可能不完全理解,但为什么你不能这样做?

public static String IPZip = props.Props.getIPZip("IPZip");

而不是稍后分配某些内容?