2009-05-22 9 views
5

Je voudrais générer setters méthode enchaînant (setters qui retournent l'objet mis), comme suit:peut Eclipse générer setters méthode enchaînant

public MyObject setField (Object value) { 
    this.field = value; 
    return this; 
} 

Cela rend plus facile de faire instanciations un liner , que je trouve plus facile à lire:

myMethod (new MyObject().setField (someValue).setOtherField (someOtherValue)); 

Les modèles d'Eclipse peuvent-ils être modifiés pour cela? J'ai changé le contenu pour inclure return this; mais la signature n'est pas modifiée.

+0

Personnellement, je ne connais pas la réponse. Cependant, vous pouvez trouver quelques résultats en recherchant des interfaces "fluentes". http://en.wikipedia.org/wiki/Fluent_interface –

+0

Juste ajouté le plugin potentiel, comme demandé (pas encore testé) – VonC

Répondre

3

Je confirme que l'éclipse (jusqu'à 3.5RC1) ne prend pas en charge la génération de setters de "chaînage de méthodes".
Il ne permet que la personnalisation des commentaires et du corps, pas la modification API d'un setter (ce qui signifie qu'un setter généré retourne toujours 'void').

Peut être le plugin Builder Pattern peut aider ici ... (non testé si)

façon classique (et non « gaffe », car il sera toujours générer un « void » comme type de retour pour setter):
alt text http://help.eclipse.org/help33/topic/org.eclipse.jdt.doc.user/gettingStarted/images/generate_getter_setter_dialog.png

Vs. nouveau chemin (Builder Pattern, potentiellement utilisé comme Eclipse plugin)
alt text http://www.javadesign.info/media/blogs/JDesign/DesignConcepts/DesignPatterns/GOF/Creational-BuilderPatternStructure.jpeg

+0

J'étais assez sûr que ce ne serait pas la fonctionnalité de base. Une idée sur un plugin qui le fait? –

2

N'utilisez pas Eclipse moi-même, mais vous devrez changer l'un des modèles standard si vous ne trouvez pas une fonctionnalité. D'ailleurs, cela s'appelle méthode chaînant en passant (ce qui pourrait aider avec une recherche Google ou deux).

+0

Merci, j'ai modifié la question pour indiquer explicitement que. –