Recently, I ran into an interesting bit of code related to Java enumerations. Here’s a contrived minimal sample:
/*
* Some arbitrary resource type
*/
interface Resource {
public Resource getResource();
}
enum A implements Resource{
ALPHA (B.BRAVO);
private Resource res;
private A (Resource res){ this.res = res; }
public Resource getResource(){ return res; }
}
enum B implements Resource{
BRAVO (C.CHARLIE);
private Resource res;
private B (Resource res){ [...]