web-dev-qa-db-ja.com

Eclipseのオブジェクトですべてのsetterメソッドを呼び出すためのショートカット?

でクラスのオブジェクトを作成し、setterメソッドを使用してその中のすべてのプロパティを設定したいと思います。 150を超えるセッターメソッドがあり、それぞれを入力するか、オブジェクトインスタンス名Object instanceをドット.と入力してから、Eclipseのスペースバーを押して提案を表示します。次に、セッターメソッドを選択します。 150回はやりたくない。

したがって、メソッドのすべてのセッターを呼び出すことができる、Eclipseのある種のショートカットを探していました。したがって、インスタンス名を入力すると、Eclipseがすべてのセッターメソッドを呼び出します。

  • instanceName.setterOne( "valOne");
  • instanceName.setterTwo( "valOne");
  • instanceName.setterThree( "valOne");

クラスに別のコンストラクターを作成することはできません。作成することは許可されていません。

21
simranNarula

前回の経験から、Eclipseにそのような機能があることはわかりません。私ができることのほとんどは、Type Hierarchyビューを開くことです(を押して F4 そのクラスを表示するとき)、次にそのクラスのメソッド名でソートし、さらに編集するためにすべてのセッターをコピーします。

または、リフレクションを使用してこのクラスのすべてのメソッドを見つけ、セッター呼び出しを出力できます。このクラスの名前がFooであるとすると、次のようになります。

for (Method m : Foo.class.getMethods()) {
        if (m.getName().startsWith("set")) {
            System.out.println(String.format("instanceName.%s(\"valOne\");", m.getName()));
        }
}
33
Ken Chan

この質問を参照してください: EclipseでPOJOのすべてのsetXXX呼び出しを生成しますか?

それはあなたがやりたいことをするための素晴らしくて簡単な方法を持っています。

ああ、嫌いな人を無視してみてください!

8
Grouchal

150回やりたくない

ここで役立つEclipse機能を私は知りません。

EmacsキーボードマクロやPerlスクリプトのような不格好なものを使用してソースコードをマッサージすることにフォールバックすることができますEclipseの外


他のオプション(おそらく生産的ではないでしょうが...)は、面倒なAPIの改訂を要求することです。例えば「ビルダー」パターンをサポートします。

2
Stephen C

私はEclipse4.6.0を持っています-これにはゲッターとセッターを自動生成するオプションがあります(以前のバージョンのEclipseについてはわかりません)。

(a)クラスを選択(および右クリック)(b)ソースを選択(Shift + Alt + S)(c)ゲッターとセッターを選択表示されるポップアップウィンドウ(ゲッターとセッターの生成)では、[すべて]または[個別]フィールドを選択できます。

これがお役に立てば幸いです(まだ関連がある場合)。

1
M.Harichand

あなたがこの状況に達したので、私はあなたのクラスを再設計することを真剣に検討したいと思います。このクラスやあなたの目標についてあまり知らなくても、特に同じタイプの場合、150の個別のフィールドを持つ理由はほとんどないと思います。考えてみてください。すでにこの窮地に立たされている場合、将来このコードを維持するのはどれほど簡単でしょうか。

フィールドがすべて同じタイプの場合は、配列、ListまたはMap(プロパティ->値)の使用を検討してください。それらが多くの多様なタイプである場合は、それらをより簡単に管理できるコンポーネントクラスに分割する方法を検討してください。

1
Paul Bellora

IntelliJを使用している場合は、次のプラグインを確認してください。

https://plugins.jetbrains.com/plugin/9360-generateallsetter

1
cwash

これが私が使用したいくつかのヒントです-

Ctrl + Shift + A-> Eclipseブロックの選択(これは魔法のツール01です)

Ctrl + F-> Eclipseの検索/検索と置換(マジックツール02)

Ctrl + Shift + X->大文字に(ツール03)

これが私のやり方です

  1. ブロック選択->すべてのフィールド名を選択(ツール01)例:ユーザー

  2. すべての最初の文字を選択し、最初の文字を大文字にします(ツール01/03)
    例:ユーザー

  3. すべてを選択し、Wordセットを配置します(ツール01)例:setUser

  4. すべてのフィールドを適切に並べます。したがって、ブロックセレクターを直接使用できます

  5. すべて選択して「();」を設定します例:setUser();

これで、すべてのセッターの準備が整いました

括弧内に値を挿入する場合は、マジックツール02を使用できます。検索して置換します(少し考えてみると、オプションが表示されます)

最後に、ゲッター/セッターの設定から退屈の時間を節約します。

乾杯!

1
shanika yrs

@ Ken Chan anwserに基づいて、この問題に対する独自のより一般的なソリューションを作成しました。これは、基本的なタイプだけでなく設定されています。それは完璧にはほど遠いですが、それでもいくつかの出発点になるかもしれません。

コードは ここ

0
SkorpEN