Java: массив статических строк в классе на стороне сервера - PullRequest
2 голосов
/ 13 февраля 2010

Я хочу сохранить массив статических строк, чтобы сохранить переменные, переданные клиенту при вызове сервера, и затем иметь возможность доступа к ним с клиента с помощью геттера.

по какой-то причине я могу заставить работать только очень базовый тип (например, 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

Итак. У меня вопрос: если я хочу временно сохранить массив строк на стороне сервера и получить к нему доступ, как мне это сделать в Google Web Toolkit? спасибо!

Ответы [ 2 ]

8 голосов
/ 13 февраля 2010

Вы не инициализировали свой статический массив.

По крайней мере, вы должны сделать что-то вроде этого:

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 >() );
2 голосов
/ 13 февраля 2010

Ваш массив не инициализирован. Кстати, вы не должны использовать переменные static в многопоточных приложениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...