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; } }