generate equals: compare primitive and enums without boxing (IDEA-139622)

This commit is contained in:
Anna Kozlova
2015-04-24 20:33:42 +02:00
parent 553ad77e46
commit e424def657
4 changed files with 36 additions and 6 deletions
@@ -37,3 +37,13 @@ if(this == $paramName) return true;
if($paramName == null || getClass() != ${paramName}.getClass()) return false;
#end
#end
#macro(addPrimitiveFieldComparisonCondition $field)
$field.accessor != ${classInstanceName}.$field.accessor ##
#end
#macro(addDoubleFieldComparisonCondition $field)
#if ($field.double)
Double.compare(${classInstanceName}.$field.accessor, $field.accessor) != 0 ##
#else
Float.compare(${classInstanceName}.$field.accessor, $field.accessor) != 0 ##
#end
#end
@@ -13,7 +13,17 @@ Object $paramName){
&&
#end
#set($i = $i + 1)
#if ($field.primitive)
#if ($field.double || $field.float)
#addDoubleFieldComparisonCondition($field) ##
#else
#addPrimitiveFieldComparisonCondition($field) ##
#end
#elseif ($field.enum)
#addPrimitiveFieldComparisonCondition($field) ##
#else
com.google.common.base.Objects.equal($field.accessor, ${classInstanceName}.$field.accessor)##
#end
#end
;
}
@@ -13,7 +13,17 @@ Object $paramName){
&&
#end
#set($i = $i + 1)
#if ($field.primitive)
#if ($field.double || $field.float)
#addDoubleFieldComparisonCondition($field) ##
#else
#addPrimitiveFieldComparisonCondition($field) ##
#end
#elseif ($field.enum)
#addPrimitiveFieldComparisonCondition($field) ##
#else
java.util.Objects.equals($field.accessor, ${classInstanceName}.$field.accessor)##
#end
#end
;
}
@@ -34,12 +34,12 @@ class A extends B {
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
final A a = (A) o;
return com.google.common.base.Objects.equal(a7, a.a7) &&
com.google.common.base.Objects.equal(a8, a.a8) &&
com.google.common.base.Objects.equal(a9, a.a9) &&
com.google.common.base.Objects.equal(a10, a.a10) &&
com.google.common.base.Objects.equal(a11, a.a11) &&
com.google.common.base.Objects.equal(a12, a.a12) &&
return a7 != a.a7 &&
a8 != a.a8 &&
a9 != a.a9 &&
a10 != a.a10 &&
Float.compare(a.a11, a11) != 0 &&
Double.compare(a.a12, a12) != 0 &&
com.google.common.base.Objects.equal(a1, a.a1) &&
com.google.common.base.Objects.equal(a2, a.a2) &&
com.google.common.base.Objects.equal(a3, a.a3) &&