55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Constructors for ``++String++``, ``++BigInteger++``, ``++BigDecimal++`` and the objects used to wrap primitives should never be used. Doing so is less clear and uses more memory than simply using the desired value in the case of strings, and using ``++valueOf++`` for everything else.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
String empty = new String(); // Noncompliant; yields essentially "", so just use that.
|
|
String nonempty = new String("Hello world"); // Noncompliant
|
|
Double myDouble = new Double(1.1); // Noncompliant; use valueOf
|
|
Integer integer = new Integer(1); // Noncompliant
|
|
Boolean bool = new Boolean(true); // Noncompliant
|
|
BigInteger bigInteger1 = new BigInteger("3"); // Noncompliant
|
|
BigInteger bigInteger2 = new BigInteger("9223372036854775807"); // Noncompliant
|
|
BigInteger bigInteger3 = new BigInteger("111222333444555666777888999"); // Compliant, greater than Long.MAX_VALUE
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
String empty = "";
|
|
String nonempty = "Hello world";
|
|
Double myDouble = Double.valueOf(1.1);
|
|
Integer integer = Integer.valueOf(1);
|
|
Boolean bool = Boolean.valueOf(true);
|
|
BigInteger bigInteger1 = BigInteger.valueOf(3);
|
|
BigInteger bigInteger2 = BigInteger.valueOf(9223372036854775807L);
|
|
BigInteger bigInteger3 = new BigInteger("111222333444555666777888999");
|
|
----
|
|
|
|
|
|
=== Exceptions
|
|
|
|
``++BigDecimal++`` constructor with ``++double++`` argument is ignored as using ``++valueOf++`` instead might change resulting value. See S2111 .
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|