2012-01-17 5 views
5

、私のセッターは、次のようになります。フィールドを考えるとEclipseのテンプレート)MVCモデルクラスの場合

enum BoundProperty {FIELD_NAME, ...} 

private Type fieldName; 

public setFieldName(Type newValue) { 
    Type oldValue = fieldName; 
    fieldName = newValue; 
    firePropertyChange(BoundProperty.FIELD_NAME, oldValue, newValue); 
} 

、この出力が自動生成されたセッターから製造することができますか?そうでない場合、テンプレートからこの出力を得る方法はありますか?

出力はメソッド名を生成するためにフィールド名をCamelCaseでなければならないため、fieldNameはsetFieldName()を生成し、フィールド名を大文字にしてプロパティenumを生成します。

したがって、フィールド名はFIELD_NAME(またはFIELDNAMEも有効です)を生成します。

+1

[この回答](http://stackoverflow.com/a/7237108/274350)のように私が探しているもののいくつかを行います。 –

答えて

0

Fast Code Eclipse Pluginはオプションのように見えますが、私は追いかけるために時間を持っていないと、質問Useful Eclipse Java Code Templatesにユーザーqualidafialによって提供される答えは、私はEclipseのプラグインを必要とせずに行うために必要なすべてをしてそれをインストールするエラーを得ました。

1

「ゲッター/セッターの生成」ダイアログでこのメッセージが表示されます。 ゲッター/セッターのフォーマットは、コードテンプレートの設定ページで設定できます。あなたはそこに行くことができます(Setter Bodyの下にCodeセクションの下に)そして以下のように変更してください。

Type oldValue = ${field}; 
${field} = ${param}; 
firePropertyChange(BoundProperty.FIELD_NAME, oldValue, ${param}); 

ただし、BoundPropertyは生成されません。それが可能かどうかを調べるためには、より多くの研究が必要です。これらのリンクは、私はEclipseのテンプレートを使用して、これを作るための簡単な方法は、主にキャメルケース/大文字と列挙値の生成に関しては、そこにはないと思う

Useful Eclipse Java Code TemplatesGetting started with Eclipse code templates

+0

お返事ありがとうございます。私はこれを試しましたが、それだけでは十分ではありません - タイプはフィールドのタイプでなければならず、FIELD_NAMEはfieldNameの大文字バージョンでなければなりません。コードテンプレート画面で使用できる変数からこれらを派生させる方法はありませんか? –

+0

私はちょうど答えにいくつかのリンクを追加しました。そこに新しい変数をつけることができますか? – Reddy

+0

ところで、列挙型に新しいフィールドを追加する方法が必要ですか? – Reddy

1

を助けるかもしれません。これらの2つの質問Is there a way to capitalize the first letter of a value of a variable in Eclipse (Helios) code templatesProgrammatically add code templates?を確認して詳細を調べることができます。

IMHO、あなたが望むものを達成する最良の方法は、Fast Code Eclipse Pluginを使用して、フィールドからすべてのコードを生成するそのプラグインの速度テンプレートを作成することです。

enum BoundProperty { 
#foreach ($field in ${fields}) 
    ${field.toUpperCase()} #if($foreach.hasNext), #end 
#end 
} 

#foreach ($field in ${fields}) 
    public ${field.type} get${field.name.substring(0,1).toUpperCase()}${field.name.substring(1)}(${field.type} newValue) { 
     Type oldValue = fieldName; 
     fieldName = newValue; 
     firePropertyChange(BoundProperty.${field.name.toUpperCase()}, oldValue, newValue);  
    } 
#end 

または"getter_setter" template of that pluginを変更。

関連する問題