Экземпляры того же класса могут получить доступ к членам парламента, не занимающим официального поста других экземпляров:
class Thing {
private int x;
public int addThings(Thing t2) {
return this.x + t2.x; // Can access t2's private value!
}
}
По моему опыту, следующая передовая практика значительно снижает сложность и путаницу при работе с датами и часовыми поясами в gwt:
В вашем случае, когда вы создаете дату на сервере (часовой пояс A), преобразуйте ее в миллисекунды с эпохи по Гринвичу перед отправкой клиенту. На клиенте используйте DateTimeFormat (или напишите свою собственную утилиту форматирования даты), чтобы преобразовать его в часовой пояс B или часовой пояс C.
Я предполагаю, что вы здесь используете вызовы RPC для связи сервер-клиент. Также предположим, что вас не волнует часовой пояс B, и вы знаете, какой часовой пояс C на сервере.
У вас есть несколько вариантов:
или:
если по какой-то причине ни один из них не был действителен для вас
Вы не можете изменить часовой пояс GWT, следовательно, все java.util.Date имеют часовой пояс браузера. Вам нужно будет обработать текущий часовой пояс вручную.
Я вижу 3 варианта:
Вы сами управляете преобразованием часового пояса.
Вы переопределяете сериализатор / десериализатор java.util.Date как в этом посте . И, возможно, с использованием специальной реализации java.util.Date , которая переопределяет getTimezoneOffset () . Этот подход требует перекомпиляции GWT API!.
Вы реализуете свою собственную дату, либо путем расширения java.util. Дата (как в варианте 2) или обертывание его каким-либо объектом часового пояса. В этом варианте CustomFieldSerializer все еще может быть полезен, но нет необходимости перекомпилировать GWT API.
Я бы предпочел вариант 3. По крайней мере, до тех пор, пока GWT RPC, возможно, когда-нибудь не будет поддерживать замену CustomFieldSerializer