Using of Inner Classes
by , 02-06-2012 at 12:15 AM (546 Views)
Java Code:package myPackage2; public abstract class Event { private long eventTime; protected final long delayTime; public Event(long delayTime) { this.delayTime = delayTime; start(); } public void start() { eventTime = System.nanoTime() + 2*delayTime; } public boolean ready() { return System.nanoTime() >= eventTime; } public abstract void action(); }Java Code:package myPackage2; import java.util.ArrayList; import java.util.List; public class Controller { private List<Event> eventList = new ArrayList<Event>(); public void addEvent(Event c) { eventList.add(c); } public void run() { System.out.println("Run!"); while(eventList.size()>0) { //System.out.println("Eventlist size: " + eventList.size()); for(Event e: new ArrayList<Event>(eventList)) if(e.ready()) { System.out.println(e); e.action(); eventList.remove(e); } } } }Java Code:package myPackage2; public class GreenHouseControls extends Controller { private boolean light = false; GreenHouseControls() { this.addEvent(new Bell(0)); } public class LightOn extends Event { public LightOn(long delayTime) { super(delayTime); } public void action() { light = true; } public String toString() { return "Light is on"; } } public class LightOff extends Event { public LightOff(long delayTime) { super(delayTime); } public void action() { light = false; } public String toString() { return "Light is off"; } } public class Bell extends Event { public Bell(long delayTime) { super(delayTime); } public void action() { } public String toString() { return "Bing!"; } } }Java Code:package myPackage2; public class GreenHouseController { public static void main(String[] args) { GreenHouseControls gc = new GreenHouseControls(); gc.addEvent(gc.new Bell(500000)); gc.addEvent(gc.new LightOn(999000000/2)); gc.addEvent(gc.new LightOff(999000000)); gc.run(); } }










Email Blog Entry
PDF to TIFF Conversion & Control...
Yesterday, 11:39 AM in Java Software