Классы GWT: аннотация для предотвращения сериализации поля? - PullRequest
1 голос
/ 30 ноября 2009

В GWT 1.7 у меня есть класс, используемый для конструирования объектов на стороне сервера, которые затем используются на стороне клиента (браузера).

На стороне клиента я хочу кэшировать сервис (в данном случае NumberFormat). Это будет инициализироваться лениво в методе только для клиента и сохранено как объект поля.

Проблема заключается в том, что инструменты сборки Java (1.6) интерпретируют это поле как необходимость сериализации на стороне сервера (даже если к нему никогда не обращаются на сервере).

Я мог бы обернуть объект на некоторой стороне клиента, но я бы предпочел указать аннотацию, чтобы указать, что полю никогда не потребуется сериализация для передачи RPC.

public class myCrossDomainObject {

  private int someSerializedField;
  private string anotherSerializedField;

  @SomeAnnotationIKnowNotWhat(..)
  private NumberFormat numberFormatterDontSerializeMe;

  // rest of class ......

}

Ответы [ 2 ]

7 голосов
/ 30 ноября 2009

Попробуйте

private transient NumberFormat numberFormatterDontSerializeMe;
0 голосов
/ 24 сентября 2017

@ GwtTransient

Эта аннотация означает то же самое, что и временное ключевое слово, но оно игнорируется всеми системами сериализации, кроме GWT. Обычно ключевое слово transient следует использовать в предпочтении этой аннотации. Тем не менее, для типов, используемых с несколькими системами сериализации, это может быть полезно.
Обратите внимание, что GWT фактически примет любую аннотацию с именем GwtTransient для этой цели. Это сделано для того, чтобы библиотеки могли поддерживать сериализацию GWT без создания прямой зависимости от Распределение GWT.

http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/rpc/GwtTransient.html

...