public int hashCode() { #if (!$superHasHashCode && $fields.size() == 1) #set($field = $fields.get(0)) #if ($field.primitive) #addTempForOneField($field) return #addPrimitiveFieldHashCode($field); #else return #addFieldHashCode($field, false); #end #elseif ($fields.size() > 0) #set($resultName = $helper.getUniqueLocalVarName("result", $fields, $settings)) int $resultName ## #set($resultAssigned = false) #set($resultDeclarationCompleted = false) #if ($superHasHashCode) = #addSuperHashCode(); #set($resultAssigned = true) #set($resultDeclarationCompleted = true) #end #addTempDeclaration($resultDeclarationCompleted) #set($tempName = "#addTempDeclaration($resultDeclarationCompleted)") #foreach($field in $fields) #addTempAssignment($field) #if ($resultDeclarationCompleted) $resultName ## #end = ## #if ($resultAssigned) 31 * $resultName + ## #end #if ($field.primitive) #addPrimitiveFieldHashCode($field)## #else #addFieldHashCode($field, $resultAssigned)## #end ; #set($resultAssigned = true) #set($resultDeclarationCompleted = true) #end return $resultName; #else return 0; #end } ## #macro (addPrimitiveFieldHashCode $field) #set ($fName = $field.accessor) #if ($field.byte || $field.short || $field.char) $fName## #elseif ($field.long) #if ($java_version < 8) (int)($fName ^ ($fName >>> 32))## #else java.lang.Long.hashCode($fName)## #end #elseif ($field.boolean) #if ($java_version < 8) ($fName ? 1 : 0)## #else java.lang.Boolean.hashCode($fName)## #end #elseif ($field.float) #if ($java_version < 8) java.lang.Float.floatToIntBits($fName)## #else java.lang.Float.hashCode($fName)## #end #elseif ($field.double) #if ($java_version < 8) #set($tempName = "#getTempVarName()") (int) ($tempName ^ ($tempName >>> 32))## #else java.lang.Double.hashCode($fName)## #end #elseif ($field.void) 0## #else $fName## #end #end ## #macro(getTempVarName) $helper.getUniqueLocalVarName("temp", $fields, $settings)## #end ## #macro(addTempForOneField $field) #if ($field.double && $java_version < 8) #if ($settings.generateFinalLocals) final ## #end #set($tempName = "#getTempVarName()") long $tempName = java.lang.Double.doubleToLongBits($field.accessor); #end #end ## #macro(adjustHashCodeToArrays $field) #if ($field.array && $java_version > 4) #if ($field.nestedArray) java.util.Arrays.deepHashCode($field.accessor)## #else java.util.Arrays.hashCode($field.accessor)## #end #else ${field.accessor}.hashCode()## #end #end ## #macro(addSuperHashCode) #if ($superHasHashCode) super.hashCode()## #else 0## #end #end ## #macro(addTempDeclaration $resultDeclarationCompleted) #foreach($field in $fields) #if ($field.double && $java_version < 8) #if (!$resultDeclarationCompleted) ; #end #set($tempName = "#getTempVarName()") long $tempName; #set($resultDeclarationCompleted = true) #break #end #end #end ## #macro(addTempAssignment $field) #if ($field.double && $java_version < 8) #set($tempName = "#getTempVarName()") $tempName = java.lang.Double.doubleToLongBits($field.accessor); #end #end ## #macro(addFieldHashCode $field $brace) #set($name = $field.accessor) #if ($field.notNull)#adjustHashCodeToArrays($field) #elseif ($field.array && $java_version > 4)#adjustHashCodeToArrays($field) #elseif ($java_version >= 7) java.util.Objects.hashCode($field.accessor) ## #else #if ($brace)(## #end $name != null ? #adjustHashCodeToArrays($field) : 0## #if ($brace))## #end #end #end