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