30

Java 7 で導入されたジェネリックのひし形構文が好きです。時間を節約するという観点からはそれほどではありませんが (ほとんどの IDE がそのビットを埋めてくれます)、コードが少しきれいに見えるからです。これと他の理由から (主に、私は新しいソフトウェアを開発していて、Java 7 の新しい API のいくつかが役立つという事実があります)、既存のコードベースを Java 7 を使用/要求するように切り替える可能性が最も高いです。

ただし、ダイヤモンド以前の構文がかなりの部分で既に書かれているため、全体を通して一貫してダイヤモンド構文を使用したいと考えています。IDE ショートカット (私は Netbeans を使用していますが、明らかにプロジェクトを無料の IDE で開いてタスクを実行できます) や、既存の汎用コードをダイヤモンド構文を使用するように自動的に切り替えることができるものはありますか?

4

6 に答える 6

45

そうそう、私はIntelliJ(無料のCommunity Edition)でこれを成功させました。

メニュー>分析>コードの検査...

その結果、「Java言語レベルの移行支援>明示的なタイプは<>に置き換えることができます」を選択します。

右クリックして「ApplyFix」「Replacewith<>」を実行すると、ダイヤモンドが表示されます。

匿名クラスのdiamondに関するバグがあったため、修正後に一部のコードがコンパイルされない場合があります。当時は元に戻す必要があります。

// anonymous class, <> doesn't work.
new Factory<Pig>(){ ... }  
// however IntelliJ may wrongly "fix" it to
new Factory<>(){ ... }   // does not compile.
于 2011-07-23T02:52:46.793 に答える
8

他のすべての検査ではなくダイヤモンドのみを分析する場合は、IntelliJ IDEA 12 を使用して次の場所に移動します。

分析>名前でインスペクションを実行...>開いたプロンプトに「明示的なタイプを<>に置き換えることができます」と入力>ドロップダウンエントリを選択してEnterキーを押します

インスペクションの実行後、画面下部の [インスペクション] タブで修正を適用することを選択できます。

これは、通常の「分析 > コードの検査...」を使用してすべてのコード検査を実行するよりもはるかに高速です。

于 2013-04-08T17:33:16.137 に答える
7

Eclipse を使用すると、正規表現を使用して検索/置換を使用できます。

検索する:

new (\w+)<.+>

そして、次のように置き換えます:

new $1<>

これにより、匿名の内部クラスも置き換えられるため、コンパイル エラーが発生する可能性があります。

于 2014-10-21T16:34:06.133 に答える
4

Eclipseは冗長な型引数を検出し、それらを削除してひし形を作成するための迅速な修正を提供します。http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part_22.htmlを参照してください。

于 2011-07-23T15:38:02.460 に答える
2

これは、Netbeans の組み込み機能「検査と変換」を使用して行うことができます。

  1. 開くRefactor->Inspect and Transform
  2. 使用Single Inspection:Can Use Diamond
  3. クリックInspect
  4. クリックDo Refactoring
于 2015-11-05T16:08:19.883 に答える