Frage

In Eclipse ist es eine Möglichkeit, dass eine Klasse mit einer Liste der definierten Setter gegeben, dass Sie diese aus, bevor bevölkern sie auflisten können?

Zum Beispiel:

public class Test {
  private String valueA;
  private String valueB;
  private String valueC;
  private String valueD;

  public void setValueA(String val) {
    this.valueA = val;
  }
  public void setValueB(String val) {
    this.valueB = val;
  }
  public void setValueC(String val) {
    this.valueC = val;
  }
  public void setValueD(String val) {
    this.valueD = val;
  }
}

Es wäre sehr praktisch, eine Vorlage / Verknüpfung zur Ausgabe haben:

test.setValueA(value);
test.setValueB(value);
test.setValueC(value);
test.setValueD(value);

Offensichtlich ist der Wert nicht dort für 4 Felder, aber wenn Sie 100 haben, es wäre schön (man denke JAXB Bean für ein hartes Stück XML).

Hinweis . Ich bin nicht über das Source -> Generate Getters / Setters Menü zu fragen

Danke.

War es hilfreich?

Lösung

Ich denke, dass ziemlich einfache Kombination von Katze, grep und sed kann für Sie tun Arbeit.

Hier ist ein Beispiel, das ich während einer halben Minute schrieb:

cat Device.java  | grep "public void set" | sed 's/.*public void /myObj./' | sed 's/int\|long|boolean\|float\|double\|String//' | sed 's/( /(/' | sed 's/ {/;

Ich lief es auf meiner Klasse mit dem Namen Gerät.

Hier ist die erzeugte Ausgabe:

  

myObj.setId (id);
  myObj.setNativeId (nativeId);
  myObj.setManufacturer (Hersteller);
  myObj.setModel (Modell);
  myObj.setCapabilities (List-Funktionen);

Wie Sie sehen können es funktionierte für alle Primitiven aber die letzte Setter erfordert einige Änderungen. Es ist, weil sed Befehl nicht vollständigen Satz von Operatoren für reguläre Ausdrücke unterstützt. Sie sind willkommen in Benutzer Perl oder awk statt. In diesem Fall können Sie einfach sagen: s/\(\S+ //, das heißt entfernen Sie alle Nicht-Leerzeichen, die die linke Klammer und Raum danach folgen.

Ich denke, dass Eclipse-Plugin schreibt ein perfekt ist, aber zu teure Lösung.

Ich habe hier Unix-Shell-Befehle. Wenn Sie ein Pech :( haben unter Windows (wie ich) zu entwickeln, würde ich empfehlen Sie Cygwin zu verwenden (wie ich).

Andere Tipps

Dies ist nicht direkt möglich in Eclipse, aber sicher in einem Plugin durchgeführt werden.

Zum Beispiel die Plugin fließend Bauer Sie interessieren könnte:

  

Fluent Builder sind besonders praktisch, wenn Datenobjekte innerhalb Unit-Tests Instanziieren

List<Movie> movies = Arrays.asList(
            MovieBuilder.movie().withTitle("Blade Runner")       // <- here's the builder used
                                .withAddedActor("Harrison Ford")
                                .withAddedActor("Rutger Hauer")
                        .build(),
            MovieBuilder.movie().withTitle("Star Wars")          // <- ... and also here
                                .withAddedActor("Carrie Fisher")
                                .withAddedActor("Harrison Ford")
                        .build());

Das Plugin ermöglicht es Ihnen, für jeden Setter mit dem folgende Wizzard diese Art von Test-Code zu generieren:

alt text

ich bin mir nicht bewusst alles, was dies konkret der Fall ist. Jedoch kommt die Klasse Gliederungsansicht ziemlich nahe, vor allem, wenn Sie die Filter ausschließen Dinge anpassen (zum Beispiel Felder, statische Elemente, verschachtelte Klassen), dass Sie nicht interessiert sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top