Если вы ссылаетесь на Ecore, я предполагаю, что вы используете EObject
элементы. Каждый EObject
реализует метод .eContents()
и .eAllContents()
.
Разница между ними:
.eContents()
дает вам List<EObject>
со всеми прямыми функциями локализации (все функции, определенные в мета-классе с сдерживанием = True) класса он призвал. Хотя eAllContents()
дает вам TreeIterator<EObject>
со всеми функциями локализации в дереве с классом как корень (в основном это возвращает .eContents()
на все прямой eContents()
завернутого в итератор)
Итак, если вы хотите только значения содержащихся на диск непосредственно особенности затем просто использовать eClass.eContents()
Потому что это не совсем для меня ясно, что вы пытаетесь достичь с помощью:
EList<EReference>
= _eAllContainments = eClass.getEAllContainments();
Я покажу вам несколько способов использования ЭДС для получения желаемых объектов.
Предполагается, что у вас есть объект реализации вашего метакласса (вы должны знать разницу между реализацией и метаклассом, метакласс - это EClass
, который вы моделируете, а реализация - это, да, реализация этого EClass
, но EClass - это полный независимый объект), тогда вы получите свой мета-класс вашего объекта, вызвав на нем .eClass()
.
Каждый EClass
имеет информацию о заявленной EReference
и его EAttribute
, вы получите их по телефону, например: .getE[All]References()
, то .getAll...
также возвращает все элементы определенных супер классов вашего EClass
.
Итак, теперь вы знаете, как получить определенные метаобъекты, но как вы можете получить фактические значения, представляющие их в вашем объекте реализации?
Ответ «отражение». EMF использует так называемый отражающий геттер (.eGet
) и сеттер (.eSet
), которые принимают EStructuralFeature
и возвращают фактическое значение для него.
Потому что каждый EAttribute
и EReference
является EStructuralFeature
вы получаете соединение от вашей EClass
информации вашей реализации.
FYI: Вы можете также получить EStructuralFeatures вашего EClass по имени, то вы могли бы сделать что-то вроде этого: Предполагаемая ваш элемент имеет атрибут, который называется name
затем:
element.eGet(element.eClass().getEStructuralFeature("name"));
дает вам фактическое значение для атрибута вашего элемента.
Что случилось с вопросом? Некоторая обратная связь была бы подходящей, чтобы спросить ее надлежащим образом. – landunder
Я думаю, вам нужно больше объяснять проблему, с которой вы сталкиваетесь. ;) –