EnumSet range

import java.util.EnumSet;

// jamesprogram.java
class jamesprogram {

	public static void main (String[] args){
		
		// enhanced for loop
		// this loops through the enumeration
		// contants in the array cat.values() and
		// assign them to people
		for (cat people: cat.values()){
			
			System.out.printf("%s\t%s\t%s\n", people, people.getDesc(), people.getYear());
		}
		System.out.println("\n.. and now to a range of constants\n");
		
                // loops through a new array created by the range method of the EnumSet class
		for (cat people: EnumSet.range(cat.emma, cat.bernard)){
			System.out.printf("%s\t%s\t%s\n", people, people.getDesc(), people.getYear());
		}
	}
}
//cat.java
// the enum allows us to use the class in
// a specific way
public enum cat {
	
	// declare constants of the enum type
	// i.e. variables that never change
	james("java","37"),
	emma("xml","40"),
	george("php","100"),
	bernard("excel","76"),
	matthew("perl","19");
	
	// final, we don't want this changed
	// these two declared variables represent
	// the two arguments above
	private final String desc;
	private final String year;
	
	//now have a enumeration constructor
	cat(String description, String theirYear){
		desc = description;
		year = theirYear;
	}
	
	public String getDesc(){
		return desc;
	}
	
	public String getYear(){
		return year;
	}
	
}

Outputs:

emma xml 40
george php 100
bernard excel 76
matthew perl 19

.. and now to a range of constants

emma xml 40
george php 100
bernard excel 76

As we can see

EnumSet.range(cat.emma, cat.bernard)

creates a new array and is the range of values (inclusive) between emma and bernard.

Leave a Reply