Immutable Bit : Mutable « Data Type « Java






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

   
    
    
    
  








Related examples in the same category

1.Mutable IntegerMutable Integer
2.Mutable double
3.Immutable representation of a date with an optional time and an optional time zone based on RFC 3339.
4.Mutable Boolean
5.Mutable Int
6.Mutable Long
7.A reassignable integer usable for counting.