Java:将非静态变量分配给静态变量
我使用一个名为GlobalVar的类来存储整个应用程序所需的一些全局变量。这个类看起来像这样:Java:将非静态变量分配给静态变量,java,variables,scope,Java,Variables,Scope,我使用一个名为GlobalVar的类来存储整个应用程序所需的一些全局变量。这个类看起来像这样: public class GlobalVar { MyProps props = new MyProps(); public GlobalVar() throws Exception { } public static String PPFirstName = "Kim"; public static String PPLastName = "S
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静态变量
注意:使用此方法的目的是我能够在应用程序中的任何位置使用语法GlobalVar.IPZip。您正在创建MyProps的实例,然后调用其非静态getIPZip方法。不能将非静态方法的结果分配给静态变量 相反,您需要将getIPZip方法转换为MyProps类的静态方法,然后您可以像这样将其结果分配给yor IPZip变量
public static String IPZip = MyProps.getIPZip("IPZip");
然后,您可以使用GlobalVar.IPZip在任何地方访问IPZip
但是,如果将getIPZip方法设置为静态,那么在GlobalVar类中添加另一个变量有些不必要,因为您可以调用MyProps.getIPZipIPZip;代码中的任意位置
另一种选择是将getIPZip方法移动到GlobalVar类中,并使其成为其中的静态方法,然后可以调用GlobalVar.getIPZipIPZip 我可能不完全理解,但你为什么不能这样做
public static String IPZip = props.Props.getIPZip("IPZip");
这很可能是一个设计问题,而不是以后分配。您是否考虑过使用其他全局变量持久性方法?您能将您的GlobalVar类转换为具有getter和setter的POJO吗?如果您担心会使用多个类副本,可以使用单例模式