If you go to the trouble of importing a symbol statically, then you should make use of it, and you should do so consistently. Similarly, there's no reason to both import a class and then refer to it in code by its fully-qualified name. Otherwise, maintainers could be confused by the difference between qualified and unqualified references. == Noncompliant Code Example ---- import java.util.*; import java.math.BigInteger; import static java.lang.String.format; //... String s1 = format("%cello %cellow", 'h','f'); // Compliant String s2 = String.format("%cello %cellow", 'm','y'); // Noncompliant; is this a different format function than on the previous line? java.util.List list = new java.util.ArrayList(); // Noncompliant; both classes included in java.util.* import java.math.BigInteger myBigI = BigInteger.ZERO; // Noncompliant. This mixed usage is particularly confusing ---- == Compliant Solution ---- import java.util.*; import java.math.BigInteger; import static java.lang.String.format; //... String s1 = format("%cello %cellow", 'h','f'); String s2 = format("%cello %cellow", 'm','y'); List list = new ArrayList(); BigInteger myBigI = BigInteger.ZERO; ----