Wie erstelle ich eine generische Liste mit Eclipse EMF?

8

Ich möchte eine Klasse mit Eclipse-EMF erstellen, die ein List mit String -Objekten enthält. Ich sehe, dass Ecore eine EList hat, aber ich kann den generischen Typ der Liste nicht ändern.

Irgendeine Idee, wie man das macht?

    
Yves_T 18.07.2012, 14:06
quelle

2 Antworten

13
___ tag123eclipse ___ Eclipse ist eine Open-Source-IDE und Plattform zum Erstellen von Anwendungen. Es gibt eine Vielzahl von Plugins für verschiedene Programmiersprachen und andere entwicklungsorientierte Werkzeuge (wie Modellierung, Datenbanksuche usw.). Dieses Tag sollte nur für Fragen verwendet werden, die sich speziell mit der Eclipse-IDE oder der Eclipse-Plattform befassen, nicht jedoch für generalisierte (Java, Android usw.) Programmierthemen. ___ tag123eclipseemf ___ Verwenden Sie dieses Tag für Fragen zum Eclipse Modeling Framework Project (EMF) ___ qstnhdr ___ Wie erstelle ich eine generische Liste mit Eclipse EMF? ___ answer 11547580 ___

Wenn Sie Code generieren möchten, der Ihnen EList<String> gibt, fügen Sie einen neuen EAttribute zu einem EClass hinzu, geben Sie ihm den EType EString und setzen Sie die Eigenschaft "Upper Bound" auf ' -1 '.

Wenn Sie eine solche Liste programmgesteuert erstellen möchten, können Sie beispielsweise BasicEList ( org.eclipse.emf.common.util.BasicEList<E> ):

verwenden %Vor%

Wenn Sie Ihre anderen Optionen sehen möchten, öffnen Sie die Typhierarchie unter: org.eclipse.emf.common.util.AbstractEList<E>

    
___ answer17696110 ___

Nicht sicher, ob Ihre Frage beantwortet wurde und was Sie eigentlich tun möchten.

Wenn Sie Java-Code aus einer .ecore-Datei erzeugen wollen, dann gebe ich hier ein Beispiel mit dem Eclipse Juno's Beispiel Ecore Model Editor von EMF (Rechtsklick auf die .ecore Datei).

Vielleicht ist es nicht direkt, was Sie wollen, aber das könnte für jemand anderen hilfreich sein.

Angenommen, Sie möchten eine solche Methode in Ihrer generierten Java-Klasse MyClass:

%Vor%

In Ihrem Beispiel-Ecore-Modell-Editor möchten Sie Wie Ihre Methode im Ecore-Editor aussieht durch

  • fügen Sie MyClass ein "New Child" von EOperation hinzu, nennen Sie es getListOfType
  • füge zu getListOfType ein "New Child" von ETypeParameter hinzu, nenne es T
  • zu T a "New Child" von EGerician Bound Type hinzufügen, würden Sie ein "T extends?" anstelle von "T"
  • Klicken Sie auf den Pfeil, um "T extends?", klicken Sie auf "?", im "Eigenschaften" -Fenster wählen Sie im Dropdown-Menü von EClassifier einen EString, jetzt würden Sie "T extents EString" sehen

  • fügen Sie zu "getListOfType" ein "neues Kind" des EGenerischen Rückgabetyps

  • hinzu
  • klicke auf das neu erstellte "?" Wählen Sie in einem Dropdown-Menü von EClassifier und EEList
  • aus
  • Öffnen Sie den Pfeil von EEList, wählen Sie im Eigenschaftsfenster innerhalb eines Dropdown-Menüs von EType Parameter ein "T erweitert EString"

  • füge zu getListOfType ein "New Child" von "EParameter" hinzu

  • Wählen Sie im Eigenschaftenfenster des neu erstellten Parameters "null" Name als "clazz", ETyp als "EJavaClass"
  • im Eigenschaftenfenster des neuen "?" (zwei Ebenen unterhalb des Knotens "clazz: EJavaClass"), wählen Sie EType Parameter als "T extends EString", jetzt wird "clazz: EJavaClass" zu "clazz: EJavaClass"

Nun können Sie Ihre .ecore-Datei verwenden, um eine Java-Klasse zu generieren.

    
___ qstntxt ___

Ich möchte eine Klasse mit Eclipse-EMF erstellen, die ein %code% mit %code% -Objekten enthält. Ich sehe, dass Ecore eine %code% hat, aber ich kann den generischen Typ der Liste nicht ändern.

Irgendeine Idee, wie man das macht?

    
___
Max Hohenegger 18.07.2012, 18:03
quelle
6

Nicht sicher, ob Ihre Frage beantwortet wurde und was Sie eigentlich tun möchten.

Wenn Sie Java-Code aus einer .ecore-Datei erzeugen wollen, dann gebe ich hier ein Beispiel mit dem Eclipse Juno's Beispiel Ecore Model Editor von EMF (Rechtsklick auf die .ecore Datei).

Vielleicht ist es nicht direkt, was Sie wollen, aber das könnte für jemand anderen hilfreich sein.

Angenommen, Sie möchten eine solche Methode in Ihrer generierten Java-Klasse MyClass:

%Vor%

In Ihrem Beispiel-Ecore-Modell-Editor möchten Sie Wie Ihre Methode im Ecore-Editor aussieht durch

  • fügen Sie MyClass ein "New Child" von EOperation hinzu, nennen Sie es getListOfType
  • füge zu getListOfType ein "New Child" von ETypeParameter hinzu, nenne es T
  • zu T a "New Child" von EGerician Bound Type hinzufügen, würden Sie ein "T extends?" anstelle von "T"
  • Klicken Sie auf den Pfeil, um "T extends?", klicken Sie auf "?", im "Eigenschaften" -Fenster wählen Sie im Dropdown-Menü von EClassifier einen EString, jetzt würden Sie "T extents EString" sehen

  • fügen Sie zu "getListOfType" ein "neues Kind" des EGenerischen Rückgabetyps

  • hinzu
  • klicke auf das neu erstellte "?" Wählen Sie in einem Dropdown-Menü von EClassifier und EEList
  • aus
  • Öffnen Sie den Pfeil von EEList, wählen Sie im Eigenschaftsfenster innerhalb eines Dropdown-Menüs von EType Parameter ein "T erweitert EString"

  • füge zu getListOfType ein "New Child" von "EParameter" hinzu

  • Wählen Sie im Eigenschaftenfenster des neu erstellten Parameters "null" Name als "clazz", ETyp als "EJavaClass"
  • im Eigenschaftenfenster des neuen "?" (zwei Ebenen unterhalb des Knotens "clazz: EJavaClass"), wählen Sie EType Parameter als "T extends EString", jetzt wird "clazz: EJavaClass" zu "clazz: EJavaClass"

Nun können Sie Ihre .ecore-Datei verwenden, um eine Java-Klasse zu generieren.

    
CuongHuyTo 17.07.2013 09:30
quelle

Tags und Links