Java Doc for HashCodeBuilder.java in  » Portal » jetspeed-2.1.3 » org » apache » jetspeed » util » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Portal » jetspeed 2.1.3 » org.apache.jetspeed.util 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   org.apache.jetspeed.util.HashCodeBuilder

HashCodeBuilder
public class HashCodeBuilder (Code)
HashCode generation routines.

This class enables a good hashcode to be built for any class. It follows the rules laid out in the book Effective Java, by Joshua Bloch. Writing a good hashCode is actually quite difficult. This class aims to simplify the process.

All relevant fields from the object should be included in the hashCode. Derived fields may be excluded. In general, any field used in the equals method must be used in the hashCode method.

To use this class write code as follows:

 public class Person {
 String name;
 int age;
 boolean isSmoker;
 ...
 public int hashCode() {
 // you pick a hard-coded, randomly chosen, non-zero, odd number
 // ideally different for each class
 return new HashCodeBuilder(17, 37).   
 append(name).
 append(age).
 append(smoker).
 toHashCode();
 }
 }
 

Alternatively, there is a method that uses reflection to determine the fields to test. Because these fields are usually private, the method, reflectionHashCode, uses Field.setAccessible to change the visibility of the fields. This will fail under a security manager, unless the appropriate permissions are set. It is also slower than testing explicitly.

A typical invocation for this method would look like:

 public boolean hashCode(Object o) {
 return HashCodeBuilder.reflectionHashCode(this);
 }
 

author:
   Stephen Colebourne
version:
   $Id: HashCodeBuilder.java 517121 2007-03-12 07:45:49Z ate $



Constructor Summary
public  HashCodeBuilder()
     Constructor for HashCodeBuilder.
public  HashCodeBuilder(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber)
     Constructor for HashCodeBuilder. Two randomly chosen, non-zero, odd numbers must be passed in.

Method Summary
public  HashCodeBuilderappend(Object object)
     Append a hashCode for an Object.
public  HashCodeBuilderappend(long value)
     Append a hashCode for a long.
public  HashCodeBuilderappend(int value)
     Append a hashCode for an int.
public  HashCodeBuilderappend(short value)
     Append a hashCode for a short.
public  HashCodeBuilderappend(char value)
     Append a hashCode for a char.
public  HashCodeBuilderappend(byte value)
     Append a hashCode for a byte.
public  HashCodeBuilderappend(double value)
     Append a hashCode for a double.
public  HashCodeBuilderappend(float value)
     Append a hashCode for a float.
public  HashCodeBuilderappend(boolean value)
     Append a hashCode for a long.
public  HashCodeBuilderappend(Object[] array)
     Append a hashCode for an Object array.
public  HashCodeBuilderappend(long[] array)
     Append a hashCode for a long array.
public  HashCodeBuilderappend(int[] array)
     Append a hashCode for an int array.
public  HashCodeBuilderappend(short[] array)
     Append a hashCode for a short array.
public  HashCodeBuilderappend(char[] array)
     Append a hashCode for a char array.
public  HashCodeBuilderappend(byte[] array)
     Append a hashCode for a byte array.
public  HashCodeBuilderappend(double[] array)
     Append a hashCode for a double array.
public  HashCodeBuilderappend(float[] array)
     Append a hashCode for a float array.
public  HashCodeBuilderappend(boolean[] array)
     Append a hashCode for a boolean array.
public static  intreflectionHashCode(Object object)
     This method uses reflection to build a valid hash code.
public static  intreflectionHashCode(Object object, boolean testTransients)
     This method uses reflection to build a valid hash code.
public static  intreflectionHashCode(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber, Object object)
     This method uses reflection to build a valid hash code.
public static  intreflectionHashCode(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber, Object object, boolean testTransients)
     This method uses reflection to build a valid hash code.
public  inttoHashCode()
    


Constructor Detail
HashCodeBuilder
public HashCodeBuilder()(Code)
Constructor for HashCodeBuilder. This constructor uses two hard coded choices for the constants needed to build a hashCode.



HashCodeBuilder
public HashCodeBuilder(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber)(Code)
Constructor for HashCodeBuilder. Two randomly chosen, non-zero, odd numbers must be passed in. Ideally these should be different for each class, however this is not vital. Prime numbers are preferred, especially for the multiplier.
Parameters:
  initialNonZeroOddNumber - a non-zero, odd number used as the initial value
Parameters:
  multiplierNonZeroOddNumber - a non-zero, odd number used as the multiplier
throws:
  IllegalArgumentException - if the number is zero or even




Method Detail
append
public HashCodeBuilder append(Object object)(Code)
Append a hashCode for an Object.
Parameters:
  object - the object to add to the hashCode this



append
public HashCodeBuilder append(long value)(Code)
Append a hashCode for a long.
Parameters:
  value - the long to add to the hashCode this



append
public HashCodeBuilder append(int value)(Code)
Append a hashCode for an int.
Parameters:
  value - the int to add to the hashCode this



append
public HashCodeBuilder append(short value)(Code)
Append a hashCode for a short.
Parameters:
  value - the short to add to the hashCode this



append
public HashCodeBuilder append(char value)(Code)
Append a hashCode for a char.
Parameters:
  value - the char to add to the hashCode this



append
public HashCodeBuilder append(byte value)(Code)
Append a hashCode for a byte.
Parameters:
  value - the byte to add to the hashCode this



append
public HashCodeBuilder append(double value)(Code)
Append a hashCode for a double.
Parameters:
  value - the double to add to the hashCode this



append
public HashCodeBuilder append(float value)(Code)
Append a hashCode for a float.
Parameters:
  value - the float to add to the hashCode this



append
public HashCodeBuilder append(boolean value)(Code)
Append a hashCode for a long.
Parameters:
  value - the long to add to the hashCode this



append
public HashCodeBuilder append(Object[] array)(Code)
Append a hashCode for an Object array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(long[] array)(Code)
Append a hashCode for a long array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(int[] array)(Code)
Append a hashCode for an int array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(short[] array)(Code)
Append a hashCode for a short array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(char[] array)(Code)
Append a hashCode for a char array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(byte[] array)(Code)
Append a hashCode for a byte array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(double[] array)(Code)
Append a hashCode for a double array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(float[] array)(Code)
Append a hashCode for a float array.
Parameters:
  array - the array to add to the hashCode this



append
public HashCodeBuilder append(boolean[] array)(Code)
Append a hashCode for a boolean array.
Parameters:
  array - the array to add to the hashCode this



reflectionHashCode
public static int reflectionHashCode(Object object)(Code)
This method uses reflection to build a valid hash code.

It uses Field.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manger, if the permissions are not set up. It is also not as efficient as testing explicitly. Transient members will be not be used, as they are likely derived fields, and not part of the value of the object. Static fields will not be tested. This constructor uses two hard coded choices for the constants needed to build a hash code.
Parameters:
  object - the object to create a hash code for int hash code
throws:
  IllegalArgumentException - if the object is null




reflectionHashCode
public static int reflectionHashCode(Object object, boolean testTransients)(Code)
This method uses reflection to build a valid hash code.

It uses Field.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manger, if the permissions are not set up. It is also not as efficient as testing explicitly. If the TestTransients parameter is set to true, transient members will be tested, otherwise they are ignored, as they are likely derived fields, and not part of the value of the object. Static fields will not be tested. This constructor uses two hard coded choices for the constants needed to build a hash code.
Parameters:
  object - the object to create a hash code for
Parameters:
  testTransients - whether to include transient fields int hash code
throws:
  IllegalArgumentException - if the object is null




reflectionHashCode
public static int reflectionHashCode(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber, Object object)(Code)
This method uses reflection to build a valid hash code.

It uses Field.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manger, if the permissions are not set up. It is also not as efficient as testing explicitly. Transient members will be not be used, as they are likely derived fields, and not part of the value of the object. Static fields will not be tested.

Two randomly chosen, non-zero, odd numbers must be passed in. Ideally these should be different for each class, however this is not vital. Prime numbers are preferred, especially for the multiplier.
Parameters:
  initialNonZeroOddNumber - a non-zero, odd number used as the initial value
Parameters:
  multiplierNonZeroOddNumber - a non-zero, odd number used as the multiplier
Parameters:
  object - the object to create a hash code for int hash code
throws:
  IllegalArgumentException - if the object is null
throws:
  IllegalArgumentException - if the number is zero or even




reflectionHashCode
public static int reflectionHashCode(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber, Object object, boolean testTransients)(Code)
This method uses reflection to build a valid hash code.

It uses Field.setAccessible to gain access to private fields. This means that it will throw a security exception if run under a security manger, if the permissions are not set up. It is also not as efficient as testing explicitly. If the TestTransients parameter is set to true, transient members will be tested, otherwise they are ignored, as they are likely derived fields, and not part of the value of the object. Static fields will not be tested.

Two randomly chosen, non-zero, odd numbers must be passed in. Ideally these should be different for each class, however this is not vital. Prime numbers are preferred, especially for the multiplier.
Parameters:
  initialNonZeroOddNumber -
Parameters:
  multiplierNonZeroOddNumber -
Parameters:
  object - the object to create a hash code for
Parameters:
  testTransients - whether to include transient fields int hash code
throws:
  IllegalArgumentException - if the object is null
throws:
  IllegalArgumentException - if the number is zero or even




toHashCode
public int toHashCode()(Code)
Return the computed hashCode int hashCode based on the fields appended



Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.