Я работаю над некоторым кодом с использованием среды EMF в Java, но его действительно сложно использовать, например, Я не могу реализовать OCL-подобный API запросов поверх EMF, который был бы безопасен для типов.
Одна из причин в том, что eGet()
для EStructuralFeature
возвращает только Object
, а не EObject
. Поэтому все, что я бы написал, должно использовать большую часть проверки на нуль, проверку типов и приведение типов, что небезопасно, неэффективно и не может быть обобщено многократным способом.
Почему EMF не генерирует фиктивные реализации с EObject
обертками для произвольного Object
значения?
Реализация интерфейсов EObject
и, следовательно, EClass
даже при простом броске UnsupportedOperationException
- это действительно боль (API слишком велики). То же самое относится к методу eContainer()
, который делает навигацию по модели болезненной.