在java中设置静态对象
我有一个类在java中设置静态对象,java,string,static,Java,String,Static,我有一个类GlobalData public class GlobalData { public static String SERVER_ROOT; public static String LOGIN_JSP = GlobalData.SERVER_ROOT + "login.jsp"; public static String HOME_JSP = GlobalData.SERVER_ROOT + "s/home.jsp"; public static
GlobalData
public class GlobalData {
public static String SERVER_ROOT;
public static String LOGIN_JSP = GlobalData.SERVER_ROOT + "login.jsp";
public static String HOME_JSP = GlobalData.SERVER_ROOT + "s/home.jsp";
public static String Logout = GlobalData.SERVER_ROOT + "Logout";
public static ServletContext SERVLET_CONTEXT;
}
我从contextListener设置这些字符串
GlobalData.SERVLET_CONTEXT = contextEvent.getServletContext();
GlobalData.SERVER_ROOT = GlobalData.SERVLET_CONTEXT.getContextPath()+"/";
System.out.println("setting server root : " + GlobalData.SERVER_ROOT);
System.out.println("setting Home jsp : " + GlobalData.HOME_JSP);
System.out.println("setting Login : " + GlobalData.LOGIN_JSP);
System.out.println("setting Logout : " + GlobalData.Logout)
输出为:
setting server root : /JCMM/
setting Home jsp : nulls/home.jsp
setting Login : nulllogin.jsp
setting Logout : nullLogout
我无法理解这种行为。有人能找到问题出在哪里吗?初始化
GlobalData
类时,所有静态变量都已设置。SERVER\u ROOT
没有值,因此它被初始化为null
。然后初始化接下来的3个变量。当使用+
连接字符串时,null
会导致字符串“null”,因此3个值LOGIN\u JSP
、HOME\u JSP
和Logout
都以“null”开头
稍后,您设置了SERVER_ROOT,但不更新其他3个,因此它们保留为前面带有“null”的字符串。初始化
GlobalData
类时,将设置所有静态变量。SERVER\u ROOT
没有值,因此它被初始化为null
。然后初始化接下来的3个变量。当使用+
连接字符串时,null
会导致字符串“null”,因此3个值LOGIN\u JSP
、HOME\u JSP
和Logout
都以“null”开头
稍后,您设置了SERVER_ROOT,但不更新其他3个,因此它们仍然是前面带有“null”的字符串。很好的解释!!谢谢很好的解释!!谢谢