Я использую EMF через аннотированный Java-код следующим образом
/**
* Adds the given type to this filter. Has no effect if the given type
* already belongs to this filter.
*
* @param type
* the type to add
* @model
*/
public void addEntityType(String type);
/**
* Returns the list of types belonging to this filter. Types are identified
* by there name.
*
* @return the list of types for this entity type filter
*
* @model
*/
public List<String> getEntityTypes();
/**
* Removes the given type from this filter. Has no effect if the given type
* doesn't belong to this filter.
*
* @param type
* the type to remove
* @model
*/
public void removeEntityType(String type);
После создания файлов ecore и genmodel из этого аннотированного интерфейса и после генерации кода метод getEntityTypes изменяется следующим образом:
public EList<String> getEntityTypes();
В целях инкапсуляции я хочу, чтобы этот EList не изменялся, поэтому код клиентского интерфейса может изменять список только с помощью методов добавления и удаления.
Есть ли какой-нибудь чистый способ сделать это, например, модифицируя аннотацию Java или файл genmodel, чтобы сообщить генератору генерировать код, возвращающий неизменяемый список? (Я не смог найти это после поиска в Google ...)
Как вы справляетесь с такими ситуациями?
Заранее спасибо
Маню