Contains rules about migrating from one JDK version to another. Don't use these rules directly, rather, use a wrapper ruleset such as migrating_to_13.xml.
Consider replacing Vector usages with the newer java.util.ArrayList if expensive threadsafe operation is not required.
This rule is defined by the following XPath expression:
//Type/ReferenceType/ClassOrInterfaceType[@Image='Vector']
Here's an example of code that would trigger this rule:
public class Foo {
void bar() {
Vector v = new Vector();
}
}
Consider replacing this Hashtable with the newer java.util.Map
This rule is defined by the following XPath expression:
//Type/ReferenceType/ClassOrInterfaceType[@Image='Hashtable']
Here's an example of code that would trigger this rule:
public class Foo {
void bar() {
Hashtable h = new Hashtable();
}
}
Consider replacing this Enumeration with the newer java.util.Iterator
This rule is defined by the following XPath expression:
//ImplementsList/ClassOrInterfaceType[@Image='Enumeration']
Here's an example of code that would trigger this rule:
public class Foo implements Enumeration {
private int x = 42;
public boolean hasMoreElements() {
return true;
}
public Object nextElement() {
return String.valueOf(i++);
}
}
Finds all places 'enum' is used as an identifier is used.
This rule is defined by the following XPath expression:
//VariableDeclaratorId[@Image='enum']
Here's an example of code that would trigger this rule:
public class A {
public class foo {
String enum = "foo";
}
}
Finds all places 'assert' is used as an identifier is used.
This rule is defined by the following XPath expression:
//VariableDeclaratorId[@Image='assert']
Here's an example of code that would trigger this rule:
public class A {
public class foo {
String assert = "foo";
}
}
In JDK 1.5, calling new Integer() causes memory allocation. Integer.valueOf() is more memory friendly.
This rule is defined by the following XPath expression:
//PrimaryPrefix
/AllocationExpression
[not (ArrayDimsAndInits)
and (ClassOrInterfaceType/@Image='Integer'
or ClassOrInterfaceType/@Image='java.lang.Integer')]
Here's an example of code that would trigger this rule:
public class Foo {
private Integer i = new Integer(0); // change to Integer i = Integer.valueOf(0);
}