<kbd id='HtOP8AyOI1520qn'></kbd><address id='HtOP8AyOI1520qn'><style id='HtOP8AyOI1520qn'></style></address><button id='HtOP8AyOI1520qn'></button>

              <kbd id='HtOP8AyOI1520qn'></kbd><address id='HtOP8AyOI1520qn'><style id='HtOP8AyOI1520qn'></style></address><button id='HtOP8AyOI1520qn'></button>

                      <kbd id='HtOP8AyOI1520qn'></kbd><address id='HtOP8AyOI1520qn'><style id='HtOP8AyOI1520qn'></style></address><button id='HtOP8AyOI1520qn'></button>

                              <kbd id='HtOP8AyOI1520qn'></kbd><address id='HtOP8AyOI1520qn'><style id='HtOP8AyOI1520qn'></style></address><button id='HtOP8AyOI1520qn'></button>

                                      <kbd id='HtOP8AyOI1520qn'></kbd><address id='HtOP8AyOI1520qn'><style id='HtOP8AyOI1520qn'></style></address><button id='HtOP8AyOI1520qn'></button>

                                              <kbd id='HtOP8AyOI1520qn'></kbd><address id='HtOP8AyOI1520qn'><style id='HtOP8AyOI1520qn'></style></address><button id='HtOP8AyOI1520qn'></button>

                                                • 企业动态
                                                • 首页 上海设备工程 上海工程 设备工程 设备工程公司 远旷康体设备 远旷康体公司 联系我们
                                                  凯发娱乐入主西布朗维奇 上海远旷康体设备工程有限公司 > 企业动态 >

                                                  浅析Eclipse建模框架(EMF)及其动态手段(二)

                                                  时间:2017-11-07 15:04来源:网络整理 作者:凯发娱乐入主西布朗维奇 点击:
                                                  浅析Eclipse建模框架(EMF)及其动态手段(二) java,Eclipse

                                                      三、 行使动态EMF手段

                                                    一样平常地,假如你在开拓时代建设了模子,那么典范环境下,,你最好天生Java代码,由于在这种环境中你的应用措施会行使较少的内存而且提供更快的数据存取(或是行使天生的API或是行使反射API)。尽量天生Java代码满意了大大都应用措施的必要,可是环境并不老是云云。你也许必要处理赏罚数据,而不必要行使天生的实现类。譬喻,你也许不知道在开拓时刻你将要处理赏罚的数据的模子,这就使得天生的Java代码成为一个可怜的选项。

                                                    动态的(也就长短天生的)类可以在运行时候用几种要领来建设。让我们先开始行使Ecore API以编程处所式来建设一个公司模子。公司模子用于描写一个公司,它有一个名称和部分。每个部分由一个数字来独一符号出而且它尚有雇员,每个雇员有一个名称。在下面的代码表现出一个响应于该模子的Ecore元模子。

                                                  EcoreFactory ecoreFactory = EcoreFactory.eINSTANCE;
                                                  EcorePackage ecorePackage = EcorePackage.eINSTANCE;
                                                  //建设一Company类
                                                  EClass companyClass = ecoreFactory.createEClass();
                                                  companyClass.setName("Company");
                                                  //建设公司名
                                                  EAttribute companyName = ecoreFactory.createEAttribute();
                                                  companyName.setName("name");
                                                  companyName.setEType(ecorePackage.getEString());
                                                  companyClass.getEStructuralFeatures().add(companyName);
                                                  //建设一Employee类
                                                  EClass employeeClass = ecoreFactory.createEClass();
                                                  employeeClass.setName("Employee");
                                                  //在Employee类上添加一个名字属性
                                                  EAttribute employeeName = ecoreFactory.createEAttribute();
                                                  employeeName.setName("name");
                                                  employeeName.setEType(ecorePackage.getEString());
                                                  employeeClass.getEStructuralFeatures().add(employeeName);
                                                  //建设一Department类
                                                  EClass departmentClass = ecoreFactory.createEClass();
                                                  departmentClass.setName("Department");
                                                  //添加department符号数字
                                                  EAttribute departmentNumber = ecoreFactory.createEAttribute();
                                                  departmentNumber.setName("number");
                                                  departmentNumber.setEType(ecorePackage.getEInt());
                                                  departmentClass.getEStructuralFeatures().add(departmentNumber);
                                                  //department类可以或许包括到一个或多个employee的参考
                                                  EReference departmentEmployees = ecoreFactory.createEReference();
                                                  departmentEmployees.setName("employees");
                                                  departmentEmployees.setEType(employeeClass);
                                                  //指定它也许是一个或多个employee
                                                  departmentEmployees.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY);
                                                  departmentEmployees.setContainment(true);
                                                  departmentClass.getEStructuralFeatures().add(departmentEmployees);
                                                  //company可以或许包括到一个或多个departments的参考
                                                  EReference companyDepartments = ecoreFactory.createEReference();
                                                  companyDepartments.setName("department");
                                                  companyDepartments.setEType(departmentClass);
                                                  companyDepartments.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY);
                                                  companyDepartments.setContainment(true);
                                                  companyClass.getEStructuralFeatures().add(companyDepartments);
                                                  //建设一个包-描写company
                                                  EPackage companyPackage = ecoreFactory.createEPackage();
                                                  companyPackage.setName("company");
                                                  companyPackage.setNsPrefix("company");
                                                  companyPackage.setNsURI("http:///com.example.company.ecore");
                                                  companyPackage.getEClassifiers().add(employeeClass);
                                                  companyPackage.getEClassifiers().add(departmentClass);
                                                  companyPackage.getEClassifiers().add(companyClass);
                                                  通过行使反射API,你能建设而且初始化一个你的模子的实例:
                                                  //获得company工场
                                                  EFactory companyFactory = companyPackage.getEFactoryInstance();
                                                  //行使工场来建设company类的实例而且
                                                  //配置company名字
                                                  EObject company = companyFactory.create(companyClass);
                                                  company.eSet(companyName, "MyCompany");
                                                  //建设一个employee类的实例
                                                  EObject employee = companyFactory.create(employeeClass);
                                                  //行使反射API初始化employee的名字
                                                  employee.eSet(employeeName, "John");
                                                  //建设一个department类的实例
                                                  EObject department = companyFactory.create(departmentClass);
                                                  department.eSet(departmentNumber, new Integer(123));
                                                  //添加"John"到department
                                                  ((List)department.eGet(departmentEmployees)).add(employee);
                                                  //添加department到company
                                                  ((List)company.eGet(companyDepartments)).add(department);

                                                  (责任编辑:admin)

                                                  相关内容:

                                                  网站地图 | 上海设备工程 | 上海工程 | 设备工程 | 设备工程公司 | 远旷康体设备 | 远旷康体公司 | 联系我们 | 企业动态

                                                    备案号: