Convert existing generics to diamond syntax

拈花ヽ惹草 提交于 2019-11-30 02:53:35

Oh yes, I have successfully done this on IntelliJ (free Community Edition).

Menu > Analyze > Inspect Code...

In the result, select "Java language level migration aids > Explicity type can be replaced with <>"

Right click, run "Apply Fix 'Replace with <>'" And you got diamonds.

There was a bug about diamond on anomymous classes, so some code may not compile after the fix. You'll have to revert them back then.

// anonymous class, <> doesn't work.
new Factory<Pig>(){ ... }  
// however IntelliJ may wrongly "fix" it to
new Factory<>(){ ... }   // does not compile.

If you just want to analyze diamonds and not all the other inspections, use IntelliJ IDEA 12 and go to:

Analyze > Run Inspection by Name... > type "explicit type can be replaced with <>" into the prompt that opens > select the drop down entry and hit Enter

After the inspection runs, you can choose to apply the fix in the Inspection tab at the bottom of the screen.

This is way faster than running every code inspection by using regular 'Analyze > Inspect Code...'

Using Eclipse, you can use a find/replace using regular expressions.

Search for:

new (\w+)<.+>

And replace for:

new $1<>

This will also replace any anonymous inner classes, so compilation errors might occur.

Eclipse detects redundant type arguments and offers a quick fix to remove them and create a diamond, see http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part_22.html

This can be done using Netbeans build-in feature "Inspect and Transform".

  1. Open Refactor -> Inspect and Transform
  2. Use Single Inspection: Can Use Diamond
  3. Click Inspect
  4. Click Do Refactoring

You can also use the eclipse "Clean Up" tool. (Source -> Clean Up, tab: Unnecessary Code, "Remove redundant type arguments")

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!