Я использую 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, чтобы сообщить генератору о создании кода, возвращающего неизменяемый список? (Я не смог найти это после поиска в гугле...)
Как вы справляетесь с такими ситуациями?
заранее спасибо
Ману