, 난 당신이 EObject
요소를 사용하고 있다고 가정합니다. 모든 EObject
은 .eContents()
및 .eAllContents()
메소드를 구현합니다.
그들 사이의 차이는 다음과 같습니다
.eContents()
당신에게 모든 직접 견제 기능을 가진 List<EObject>
가 켜져이라고 클래스의 (봉쇄 = 사실과 메타 클래스에 정의 된 모든 기능)을 제공합니다. eAllContents()
루트로 당신의 클래스와 나무에 당신에게 모든 견제 기능을 갖춘 TreeIterator<EObject>
을 제공 동안 만 직접 포함 된 값을 원한다면
(기본적으로는 직접 반복자에 랩 eContents()
모두에 .eContents()
을 반환)
EList<EReference>
= _eAllContainments = eClass.getEAllContainments : 당신이 무엇을 달성하고 싶은지 나에게 완전히 명확하지 않기 때문에 기능은 단순히 eClass.eContents()
를 사용();
원하는 개체를 얻기 위해 emf를 사용하는 몇 가지 방법을 보여 드리겠습니다.
메타 클래스의 구현 개체가 있다고 가정하면 (구현과 메타 클래스의 차이점을 알아야합니다. 메타 클래스는 모델링하는 EClass
이며 구현은 예입니다. 구현의 예입니다. EClass
이지만 EClass는 완전한 독립 Object입니다.) .eClass()
을 호출하여 Object의 meta-EClass를 가져옵니다..getE[All]References()
에서, .getAll...
은 또한 당신의 EClass
의 정의 슈퍼 클래스의 모든 요소를 반환
모든 EClass
는 EReference
과 EAttribute
를 선언, 당신은 예를 들어 호출하여 얻을 수에 대한 정보가 있습니다.
이제는 정의한 메타 오브젝트를 얻는 방법을 알고 있지만 구현 오브젝트에서이를 나타내는 실제 값을 얻으려면 어떻게해야할까요?
대답은 "반영"입니다. EMF는 반사 게터 (.eGet
)와 설정자 (.eSet
)를 사용하며,이 값은 EStructuralFeature
이며 실제 값을 반환합니다.
및 EReference
은 EStructuralFeature
이므로 EClass
정보를 구현에 다시 연결합니다.
참고 : 당신은 또한 이름으로 ECLASS의 EStructuralFeatures는, 당신은 그런 일 할 수 얻을 수 있습니다 :
element.eGet(element.eClass().getEStructuralFeature("name"));
당신에게 실제 값을 제공 : 당신의 요소 세웠 은 다음 name
라고하는 특성이있다 귀하의 요소의 속성에 대한.
질문에 대한 잘못된 점이 있습니까? 일부 피드백은 적절한 방식으로 질문하는 것이 적절할 것입니다. – landunder
나는 당신이 직면 한 문제에 대해 더 많은 설명이 필요하다고 생각한다. ;) –