WebStorm 2018.1 Help

Generating Code

WebStorm provides multiple ways to generate common code constructs and recurring elements, which helps you increase productivity. These can be either predefined or custom templates, which are applied differently based on the context, various wrappers and automatic pairing of characters. Additionally, WebStorm provides code completion and Emmet support.

Generate constructors

WebStorm can generate a constructor that initializes specific class fields using values of corresponding arguments.

To generate a constructor for a class:

  1. On the Code menu, click Generate.
  2. In the Generate popup, click Constructor.
  3. If the class contains fields, select the fields to be initialized by the constructor and click OK.

The following code fragment shows the result of generating a constructor for a class:

public class MyClass { int aInteger; double bDouble; public MyClass(int myAIntegerParam, double myBDoubleParam) { aInteger = myAIntegerParam; bDouble = myBDoubleParam; } }

Generate delegation methods

WebStorm can generate methods that delegate behavior to the fields or methods of your class. This approach makes it possible to give access to the data of a field or method without directly exposing this field or method.

To generate a delegation method for a class:

  1. On the Code menu, click Generate.
  2. In the Generate popup, click Delegate Methods.
  3. Select the target field or method, and click OK.
  4. Select the desired methods to be delegated and click OK.

The following code fragment shows the result of delegating the get(i) method of the Calendar class inside another class:

Calendar calendar; public int get(int i) { return calendar.get(i); }

Generate equals() and hashCode() methods

WebStorm can generate overrides for standard equals() and hashCode() methods defined in Java.lang.Object.

public boolean equals(Object obj)

The previous method returns true, if the object passed to it as an argument is equal to the object on which this method is invoked.

public int hashCode()

The previous method returns the integer hash code value for the object on which this method is invoked.

To generate the equals() and hashCode() methods for a class:

  1. On the Code menu, click Generate.
  2. In the Generate popup, click equals() and hashCode().
  3. Select check boxes if you want to accept subclasses and use getters during code generation. You can also select a velocity template from the Template drop-down list to generate the code or create a custom template. Click Next.
  4. Select the fields that should be used to determine equality, and click Next.
  5. Select the fields to use for calculating the hash code value. You can choose only from fields that were selected on the previous step (for determining equality). Click Next.
  6. Select the fields that contain non-null values. This optional step helps the generated code avoid checks for null and thus improves performance. Click Finish.

The following code fragment shows the result of overriding the equals() and hashCode() methods:

public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FixedRateCurrencyExchangeService that = (FixedRateCurrencyExchangeService) o; if (Double.compare(that.rate, rate) != 0) return false; return true; } public int hashCode() { long temp = rate != +0.0d ? Double.doubleToLongBits(rate) : 0L; return int (temp ^ (temp >>> 32)); }

Generate getters and setters

WebStorm can generate accessor and mutator methods (getters and setters) for the fields in your classes. Generated methods have only one argument.

To generate getters and setters for a class:

  1. On the Code menu, click Generate.
  2. In the Generate popup, click one of the following:
    • Getter to generate accessor methods for getting the current values of class fields.
    • Setter to generate mutator methods for setting the values of class fields.
    • Getter and Setter to generate both accessor and mutator methods.
  3. Select the fields to generate getters or setters for and click OK.

The following code fragment shows the result of generating the getter and setter methods for a class with one field var:

public class MyClass { int field; public int getField() { return field; } public void setField(int field) { this.field = field; } }

Generate toString()

WebStorm can generate an override for the standard toString() method defined in Java.lang.Object. The generated method returns the name of the class and a list of class field names with current values of fields.

To override the toString() method for a class:

  1. On the Code menu, click Generate.
  2. In the Generate popup, click toString().
  3. Configure the following:
    • Select the fields to be used for generating the toString() method. By default, all the available fields are selected. Click Select None to add the toString() method that returns only the class name.
    • Select the desired way for generating the toString() method from the Templates drop-down list.
    • Select the Insert @Override check box if necessary.
    • Click the Settings button to open the toString() Generation Settings dialog, where you can tune the behavior and add custom templates.
  4. Click OK.

The following code fragment shows the result of generating the toString() method for a class with several fields defined:

public class MyClass { private String name; private String url; private int port; private String[] validIPs; ... public String toString() { return "MyClass{" + "name='" + name + '\'' + ", url='" + url + '\'' + ", port=" + port + ", validIps=" + Arrays.toString(validIps) + '}'; } ... }

The following code inspections are related to the toString() method:

  • Class does not override 'toString()' method can be used to identify classes in which the toString() method is not defined. This inspection uses the exclude settings to ignore classes with fields that are not supposed to be dumped. An additional setting is to exclude certain classes using a regular expression matching their class name. As default, this is used to exclude any Exception classes.

  • Field not used in 'toString()' method can be used to identify fields that are not dumped in the toString() method. For example, if you added new fields to a class, but forgot to add them to the toString() method. Change the severity of this inspection to show errors as warnings. This will highlight any unused fields in the editor and indicate their location as yellow markers on the scroll bar.

Custom code generation templates

Templates used for generating getters and setters, as well as equals(), hashCode(), and toString() methods are written in the Velocity template language. Although you can't modify predefined templates, you can add your own custom templates to implement necessary behavior.

WebStorm provides the following variables for Velocity templates:

The following variables can be used in templates for generating getters and setters:

VariableDescription
$java_versionThe current version of the Java Runtime Environment (JRE).
$classThe current class.
$helperProvides access to various code generation helper methods.
$settingsProvides the ability to format names according to the current code style.
$fieldField for which getter or setter is generated.

The following variables can be used in templates for generating the toString() method:

VariableDescription
$java_versionThe current version of the Java Runtime Environment (JRE).
$classThe current class.
$helperProvides access to various code generation helper methods.
$settingsProvides the ability to format names according to the current code style.
$fieldsList of fields in the current class.

The following variables can be used in templates for generating the equals() method:

VariableDescription
$java_versionThe current version of the Java Runtime Environment (JRE).
$classThe current class.
$helperProvides access to various code generation helper methods.
$settingsProvides the ability to format names according to the current code style.
$fieldsList of fields in the current class.
$instanceBaseNamePredefined name of the object on which the equals() method is called.
$baseParamNamePredefined name of the equals() method parameter.
$superParamNameThe name of the parameter in the equals() method of the superclass if applicable.
$checkParameterWithInstanceofOption passed from the wizard.
$superHasEqualsWhether the superclass has equals() declared.

The following variables can be used in templates for generating the hashCode() method:

VariableDescription
$java_versionThe current version of the Java Runtime Environment (JRE).
$classThe current class.
$helperProvides access to various code generation helper methods.
$settingsProvides the ability to format names according to the current code style.
$fieldsList of fields in the current class.
$superHasHashCodeWhether the superclass has hashCode() declared.
Last modified: 20 July 2018