Tomas Kramar lives in Slovakia, where he works for a company developing software for a major local telecommunication provider. He is also a student at the Slovak University of Technology. Tomas has posted 6 posts at DZone. You can read more from them at their website. View Full User Profile

Effective Eclipse: Don't write the code, generate it

  • submit to reddit

I hope that we will never be able to generate applications. I would be without a job then and you probably too. But what we can generate are various repetitive and boring pieces of code.

The first thing that can be generated is class file. You are using it, but you have probably never realized how much time does it save you. If there was no class skeleton generation, you would have to: create new file in the proper directory (with respect to package (and create the folders too)) and place the package statement at the beginning of a class.

I will make a short stop here.
I noticed that all people generate their classes, but not all of them specify implemented interfaces and extended class. Surely, you can generate the class and write the extends and implements part afterwards, but it involves moving the cursor, writing and eventually generating abstract or implemented methods. I found it much easier to press ALT + E (extend) to add extended class and ALT + A (add interface) to add interfaces in the new class wizard. My class will then come out with empty overridden methods and correct imports.

If you look at the Source menu you can find more "Generate" commands. But none of them is so valuable and useful as Eclipse templates. They are the true gem in my daily work and it is pity they are hidden out of sight. And they are hidden well.

What are they and how to get them?

Templates serve as a shorthand for a snippet of code. You type in the magical word and it will be transformed into the snippet.

Some examples:

Type sysout and press CTRL + SPACE (the autocompletion) and it will be automagically changed to System.out.println(); with the caret waiting right in the middle between the parenthesizes.

sysout template
sysout template expanded
While we are here, let's explore the next interesting feature. Type "for" and press CTRL + SPACE to change it to a skeleton of a for loop.

for loop template expanded

The for template is a showcase of templates' power.

Notice the blue boxes around some of the commands. They represent the caret stop and you can move between them using the TAB key. Now, with the caret on "iterator", type the name of the variable representing the iterator. Its name will be changed in the whole loop as you type (the occurrences are marked with a light blue background). Now just two more TABs to change the collection variable and the type. Noticed the green line waiting in the empty line? It marks the position where the caret will jump when Enter key is pressed. So after changing the variable type you can just press Enter and the caret will jump to the empty line. When you use autocompletion the green marker is always somewhere around, waiting for you to press Enter.

Every particular template is closely bound to editor. Each editor has its own defined set of templates, which are applicable only in that editor type. It is quite logical that the sysout template will not work in JSP editor. Furthermore, each template is applicable only within the specified context of the particular editor. There are two contexts in the Java editor for example, Java and Javadoc.

To see list of all templates open Window -> Preferences and type templates into the search box.

list of all available templates

You will get a list of all editors and their respective template settings. Your list may vary from my list, because it depends on installed plugins.

I encourage you to walk through the list to see what predefined templates are available. Not all of them are useful, but you need to see it, because what does not work for me might work for you.

The true and real power of templates lies in custom templates, but I will leave this topic for the next week article.

Apart from the fact, that it can expand templates, CTR + SPACE has few more interesting uses. It is an autocompletion shortcut and it can complete the names of variables or methods and in fact, it is its most obligate and the most famous usage. But it has some more surprises to offer. If you get used to it, you will be hitting it often, even in situations where there is obviously nothing to autocomplete. Or is it?

variable name suggestion

Guess what is on the picture above? It is eclipse trying to autocomplete the name of a variable.

It is pity it cannot read my mind. I often find myself hitting the shortcut in the middle of the string ever wondering why it doesn't complete the word.

Never can remember the signature of a method you want to override? Never mind, hit CTRL + SPACE and you will get a list.

override suggestions

It can assist you in private method creation,

method stub

and it can guess what to complete even from the upper case letters.

OOME suggestion

Warning: Using autocompletion and templates can lead to uncontrolled ctrl + space hitting, surprises and productivity boost.

Published at DZone with permission of its author, Tomas Kramar. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)



Shams Mahmood replied on Sun, 2008/02/24 - 9:33am

That sysout syserr was the thing I missed most after I had to switch to intellij idea for a project :(

I'm happy that I swicthed back to eclipse now :).

Tim Goeke replied on Sun, 2008/02/24 - 8:38pm

I'm still waiting for a Star Trek programming system that we can just speak to:  "Computer, generate a program that can solve all my homework."

 You don't have to worry about your job, because you could say, "Computer generate a program to predict the future and make all the appropriate financial arrangements."

 Come to think of it, maybe I want this program for myself.  I mean, if you had a program that could predict things, you would keep quiet so as not to skew the data.  If someone really had a great stock market tool or house flipping idea, wouldn't they keep quiet and rake in the dough?

 So maybe a big old program generator is really cool especially if you're the only one who has one and you are creating obscene wealth for yourself.

- Tim 


Dusan Je replied on Tue, 2008/02/26 - 7:31am

In intellij: sysout (syserr) and hit tab;

ctrl+J for autocompletion of templates (type sys and hit ctrl+J - no SystemExeption and...  )! 

From intellij to eclipse??? 


Shams Mahmood replied on Wed, 2008/02/27 - 9:54pm in response to: Dusan Je

Thanx for the info. I wasn't aware of this feature in intellij.

Tested it and worked wonderfully. 

I'll remember to use it next time :). 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.