In IntelliJ I can click on an symbol while holding the Ctrl key which will let IntelliJ (in case of methods) navigate to the declaration. This is documented here.
If the method was defined in an interface, IntelliJ will open that interface but not the implementation.
Is there a way to tell IntelliJ always jump to the implementation if there is at least one or make it asking me which I want to jump to?
Navigate | Implementation(s), by default mapped to Ctr/Cmd+Alt+left mouse button I believe.
Related
ctrl-O is used to jump to the previous entry in the jump list.
But in the IDE, according to the documentation, ctrl-O helps you override methods declared in a base class, kind of like ctrl-enter in Eclipse when the cursor is on an empty line.
One can change a setting that will assign the control of ctrl-O to the IDE. That would make vim loose access to that key, and you'd no longer can use it to jump around the jump list.
Is there a special shortcut key, so that the next key is handled by the IDE instead of vim?
You can assign another shortcut to the override methods action via Settings | Keymap while keeping CTRL-O under control of IdeaVim in Settings | Vim Emulation.
Is possible in Intellij Idea 14 do something like in Eclipse: Refactor : Extract Class?
Or I should do it manually?
Not found proper option in menu, and I am startled option is not available.
Anything that's worth doing in eclipse can be done faster and easier in IntelliJ, but if you're used to eclipse then you'll have to work a little bit to understand IntelliJ's way of doing things.
If you place your cursor somewhere in the java code in question (or on the class name in the project window), the Refactor menu will have an Extract option. Extract Delegate, Interface, and Superclass are the three options that deal directly with classes. These menu options aren't available if your cursor isn't in java class code.
The Interface option extracts an interface, renames your class and makes it implement the interface. The 'Superclass' option extracts a superclass and changes references to refer to it rather than your, now, derived class. The Delegate option simply extracts the methods and properties you choose into a new class.
Place your cursor onto the name of your inner class and press F6.
The refactoring you are looking for is probably extract delegate.
I use the Generate function in the context menu to create my getter and setter methods. But there seems no way to tell Intellij to place the generated methods after the last method in the file ie at the bottom of the class definition. This is possible in Eclipse. Anybody know how to do it automatically in Intellij?
First of all a little hint. IntelliJ is designed to use without a mouse, so I prefer using the keyboard-shortcut Alt + Insert for code generating.
I don't know any possibility to generally define the place for inserting generated code. I recommend to place the cursor there, where you want to insert generated code and then generate it.
If you want to generate getters and setters via Generate menu, the only way is to place cursor at the bottom of your class (or wherever you want them to be)
But if your field is not used yet, there is another option: navigate to the field you need getter/setter for, press Alt+Enter (it calls intentions dialog) and choose "generate getter and setter" option. Then getter and setter will be generated at the bottom of the class (but not below inner classes if any).
settings > code style > java > arrangement
lets you customize the auto formatting options
I just moved to IntelliJ from Eclipse. I know how to get call hierarchy for methods (by pressing Ctrl+Alt+H), however, I can't get call hierarchy for classes (not type hierarchy), when I press Ctrl+Alt+H on the class name, nothing happened, when I use navigate->call hierarchy, the menu entry cannot be clicked (gray color). I need to know where the class gets called/initialized. This cool feature is in Eclipse, so I think IntelliJ also has this too.
You should be able to do the call hierarchy on a constructor. Alternatively, I've always found a usage search more useful than the call hierarchy.
Press Alt+F7 on a class, method, or field or right click and select "Find Usages". The results are categorized (new instance creation, type parameter, import, etc) so it's extremely simple to find what you're looking for.
In Eclipse, when a variable is inspected and Eclipse is able to show its value, it does so by calling toString().
IntelliJ IDEA does not do it. Can it be told to?
Thanks.
Settings | Debugger | Data Views:
Using IDEA 13.1:
Preferences -> Debugger -> Data Type Renderers
+(add) new renderer, give it a name
On 'When rendering the node' select option 'Use following expression', type in 'toString()'.
This seems to give me Eclipse-like behaviour.
I'd paste a picture... but don't have enough points. :P
By default Intellij Idea does display the toString() of objects in debug view, unless you explicitly tell it not to in the dialog pointed by CrazyCoder above.
The problem that I have found is that for some crooked reason which only the folks at JetBrains understand, IntelliJ Idea (still as of version 13) will silently ignore the above setting and it will not invoke toString() on classes which do not override the toString() method. Even adding your class in the 'For classes from the list:' will not result in invocation of toString() unless your class explicitly overrides it. So, it appears that IntelliJ Idea will never ever invoke the default toString() method of class Object. I suppose it must be allergic to it.
Right click the variable in the Debug window, and choose "view text". It will open a window showing "toString"