First, let's write a class called Color, which has no other members than 2 integer class variables: BLACK (value 2) WHITE (value 1) These variables must be marked with the 'final' modifier. ==================================================== import java.util.Random; import java.lang.reflect.Field; public class Test { public static void main(String[] args) { final Random r = new Random(); System.out.println("Testing the Color class..."); try { Field white = Color.class.getDeclaredField("WHITE"); System.out.println("WHITE is final: " + (white.getModifiers() > 10)); System.out.println("WHITE, value: " + Color.WHITE); Field black = Color.class.getDeclaredField("BLACK"); System.out.println("BLACK is final: " + (black.getModifiers() > 10)); System.out.println("BLACK, value: " + Color.BLACK); } catch (NoSuchFieldException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //ADD class Color { // public - allow access from other class // static - class-level constants // final - cannot be changed public static final int BLACK = 2; public static final int WHITE = 1; } Testing the Color class... WHITE is final: true WHITE, value: 1 BLACK is final: true BLACK, value: 2