Mega Code Archive

 
Categories / Java / Data Type
 

Immutable Bit

//package com.myapp.util.security.crypt; /**  * immutable.  * false == 0, true == 1  * @author andre  */ final class Bit {          private static int creationCounter = 0;     private static final String TRUE = "1";     private static final String FALSE = "0";     /**this flag contains all data needed*/     final boolean val;     Bit(boolean value) {         this.val = value; //        creationCounter++; // for benchmarking...     }     Bit xor(Bit other)  {return new Bit((val && (!other.val)) || ((!val) && other.val));}     Bit and(Bit other)  {return new Bit(val && other.val);}     Bit or(Bit other)   {return new Bit(val || other.val);}     Bit not()           {return new Bit(!val);}     Bit nand(Bit other) {return new Bit(!(val && other.val));}     Bit nor(Bit other)  {return new Bit(!(val || other.val));}     @Override public String toString()        {return val ? TRUE : FALSE;}     @Override public boolean equals(Object o) {return ((Bit) o).val == val;}     @Override public int hashCode()           {return val ? 1 : 0;}     public static int getCreationCounter() {         return creationCounter;     }     public static void setCreationCounter(int creationCounter) {         Bit.creationCounter = creationCounter;     } }