Классы GWT: аннотация для предотвращения сериализации поля?

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

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

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

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

public class myCrossDomainObject {

  private int someSerializedField;
  private string anotherSerializedField;

  @SomeAnnotationIKnowNotWhat(..)
  private NumberFormat numberFormatterDontSerializeMe;

  // rest of class ......

}

person Jim Blackler    schedule 30.11.2009    source источник
comment
Вы пытались пометить его как переходный?   -  person cletus    schedule 30.11.2009


Ответы (2)


Пытаться

private transient NumberFormat numberFormatterDontSerializeMe;
person Aaron Digulla    schedule 30.11.2009

@GwtTransient

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

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

person Jaroslav Záruba    schedule 24.09.2017