我想保留一个静态字符串数组来保存在调用服务器时从客户端传递的变量,然后能够使用getter从客户端访问它们。
由于某种原因我只能得到非常基本的类型(例如int而不是Integer),其他一切都会抛出空指针异常。
这是一段代码片段。 (使用GWT)
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements AddElection
{
//this seems to be throwing a NullPointerException:
static String[] currentElections;
static int index;
public String electionServer(String input) {
// save currently running elections
currentElections[index] = input;
index = index + 1;
// TODO: getcurrentElections
因此。我的问题是,如果我想暂时存储服务器端的字符串数组并能够访问它,我将如何在谷歌网络工具包中这样做? 谢谢!
答案 0 :(得分:8)
你没有初始化你的静态数组。
至少你必须做这样的事情:
static String[] currentElections = new String[ 100 ];
但似乎您的数组可能会随着时间的推移而增长,因此最好使用集合类:
static List<String > currentElections = new ArrayList<String >();
public String electionServer(String input) {
// save currently running elections
currentElections.add( input );
}
但是如果可以从多个客户端同时调用此方法,请注意。然后你必须像这样同步访问:
static List<String > currentElections =
Collections.synchronizedList( new ArrayList<String >() );
答案 1 :(得分:2)
您的阵列未初始化。顺便说一句,你不应该在多线程应用程序中使用static
变量。