private void computeHash() throws IOException, NoSuchAlgorithmException {
  hash=0;
  MessageDigest md=MessageDigest.getInstance("SHA");
  DataOutputStream out=new DataOutputStream(new DigestOutputStream(new OptimizedByteArrayOutputStream(127),md));
  out.writeUTF(name);
  out.flush();
  byte[] digest=md.digest();
  for (int i=Math.min(8,digest.length); --i >= 0; ) {
    hash+=((long)(digest[i] & 0xFF)) << (i * 8);
  }
}

private void computeHash ( ) throws IOException , NoSuchAlgorithmException { hash = 0 ; MessageDigest md = MessageDigest . getInstance ( "SHA" ) ; DataOutputStream out = new DataOutputStream ( new DigestOutputStream ( new OptimizedByteArrayOutputStream ( 127 ) , md ) ) ; out . writeUTF ( name ) ; out . flush ( ) ; byte [ ] digest = md . digest ( ) ; for ( int i = Math . min ( 8 , digest . length ) ; -- i >= 0 ; ) { hash += ( ( long ) ( digest [ i ] & 0xFF ) ) << ( i * 8 ) ; } }
computes a sha - 1 digest from the hash of the superclass , if there is a superclass , followed by the name of this class , followed by the name and type for each field , if any , declared by this class and ordered alphabetically by field name . the first 8 bytes of the digest are used to form the 64 - bit hash value for this type .
