Eclipse Optimize Imports to Include Static Imports

JavaEclipseKeyboard Shortcuts

Java Problem Overview


Is there anyway to get Eclipse to automatically look for static imports? For example, now that I've finally upgraded to Junit 4, I'd like to be able to write:

assertEquals(expectedValue, actualValue);

hit Ctrl + Shift + O and have Eclipse add:

import static org.junit.Assert.assertEquals;

Maybe I'm asking too much.

Java Solutions


Solution 1 - Java

I'm using Eclipse Europa, which also has the Favorite preference section:
> Window > Preferences > Java > Editor > Content Assist > Favorites

In mine, I have the following entries (when adding, use "New Type" and omit the .*):

org.hamcrest.Matchers.*
org.hamcrest.CoreMatchers.*
org.junit.*
org.junit.Assert.*
org.junit.Assume.*
org.junit.matchers.JUnitMatchers.*

All but the third of those are static imports. By having those as favorites, if I type "assertT" and hit Ctrl+Space, Eclipse offers up assertThat as a suggestion, and if I pick it, it will add the proper static import to the file.

Solution 2 - Java

If you highlight the method Assert.assertEquals(val1, val2) and hit Ctrl + Shift + M (Add Import), it will add it as a static import, at least in Eclipse 3.4.

Solution 3 - Java

Eclipse 3.4 has a Favourites section under Window->Preferences->Java->Editor->Content Assist

If you use org.junit.Assert a lot, you might find some value to adding it there.

Solution 4 - Java

Not exactly what I wanted, but I found a workaround. In Eclipse 3.4 (Ganymede), go to

> Window->Preferences->Java->Editor->Content Assist

and check the checkbox for Use static imports (only 1.5 or higher).

This will not bring in the import on an Optimize Imports, but if you do a Quick Fix (CTRL + 1) on the line it will give you the option to add the static import which is good enough.

Solution 5 - Java

From Content assist for static imports

>To get content assist proposals for static members configure your list of favorite static members on the Opens the Favorites preference page Java > Editor > Content Assist > Favorites preference page.
For example, if you have added java.util.Arrays.* or org.junit.Assert.* to this list, then all static methods of this type matching the completion prefix will be added to the proposals list.

Open Window » Preferences » Java » Editor » Content Assist » Favorites

enter image description here

Solution 6 - Java

For SpringFramework Tests, I would recommend to add the below as well

org.springframework.test.web.servlet.request.MockMvcRequestBuilders
org.springframework.test.web.servlet.request.MockMvcResponseBuilders
org.springframework.test.web.servlet.result.MockMvcResultHandlers
org.springframework.test.web.servlet.result.MockMvcResultMatchers
org.springframework.test.web.servlet.setup.MockMvcBuilders
org.mockito.Mockito

When you add above as new Type it automatically add .* to the package.

Solution 7 - Java

Shortcut for static import: CTRL + SHIFT + M

Solution 8 - Java

Select the constant, type

Ctrl + 1  (quick fix)

Select "Convert to static import." from the drop down.

"Quick fix" has options even though it is not an error.

Solution 9 - Java

In Eclipse 4.9, you can static import existing invocations using a quick fix.

> A new quick fix has been implemented that allows the user to convert static field accesses and static methods to use a static import. It's also possible to replace all occurrences at the same time.

More details here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPaul CroarkinView Question on Stackoverflow
Solution 1 - JavaJoey GibsonView Answer on Stackoverflow
Solution 2 - JavaDave L.View Answer on Stackoverflow
Solution 3 - JavaBill MichellView Answer on Stackoverflow
Solution 4 - JavaPaul CroarkinView Answer on Stackoverflow
Solution 5 - JavaSumit SinghView Answer on Stackoverflow
Solution 6 - JavaNeerajView Answer on Stackoverflow
Solution 7 - JavaMichael HegnerView Answer on Stackoverflow
Solution 8 - JavateknopaulView Answer on Stackoverflow
Solution 9 - JavaAnkit SoniView Answer on Stackoverflow