2011-07-25 12 views

答えて

5

私はそれがまだEclipseで実施されているとは思わないパラメータの順序を変更することができます。 A|B|CAAのすべてのサブタイプ、例えばBCを意味する(これは、しかし...

、むしろ稀リファクタリングだがA下のあなたのタイプの階層があまりにも複雑ではない場合は、まだ、この正規表現検索は、交換してください使用してみてください):

\b(A|B|C)<\s*(\w+)\s*,\s*(\w+)\s*> 

更新:あなたはより洗練されたものを一致させたいため、)人工改行せずに(これを試してみてください。

\b(A|B|C)< 
    \s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*, 
    \s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*> 
012 Eclipseを使っているので

は、あなたは、Eclipse(または良いリファクタリングを持っている別のツールを使用していない場合は、手動で正確

+0

'extended'キーワードの正規表現検索/置換のオプションを含めるとよいでしょう –

+0

True! –

+0

PS:これが1/2hで実行されても私を非難しないでください... ;-) –

2

法上で右クリックし、Refactor->変更メソッドのシグネチャは、あなたがそこに

+0

が必要です。OPは、メソッドパラメータではなく、ジェネリッククラスタイプのパラメータの切り替えについて質問します。 –

+0

これはメソッドではなく、クラス宣言です。 –

+0

ああ、私の間違い、私は間違った質問を読んでいます。この場合、私はEclipseに何かが実装されているとは思わない – jasalguero

1

ごとの交換を確認することができ、

$1<$3, $2> 

によって置き換える - あなたの場合は強くお勧めします

最初に: TDDを使用している場合は、変数が正しく交換された場合にのみ成功するテストを作成します。次に、メソッドのシグネチャを変更し、テストに合格することを確認します。

第二: 1.そのメソッドのコンパイルを失敗しているラインのそれぞれに 2.すべての呼び出しにコンパイルエラーがスローされますメソッドシグネチャから2番目のパラメータを削除して、慎重に変数をスワップ 3 2番目の変数を新しいメソッドの署名に戻します。 4.いくつかのテストを実行して、それが期待通りに機能することを確認します。

2番目の方法は明らかに醜いです。しかし、リファクタリングのサポートが良好なIDEを使用していない場合は、コンパイルエラーがそのメソッドへの呼び出しの100%をキャプチャするのに適しています(少なくともプロジェクト内では)。他の人や他のプログラムで使用されているコードライブラリを作成している場合は、その変更を影響を受けるすべての関係者に伝えることがはるかに複雑になります。

+1

'vi'でも正規表現を知っています! ;-) –

+0

...しかし、良い点、そうでなければ –

関連する問題