Skip to content

Instantly share code, notes, and snippets.

@justinrlle
Last active May 4, 2017 11:01
Show Gist options
  • Save justinrlle/4765d9c50b3391e48d1d836edbbe282c to your computer and use it in GitHub Desktop.
Save justinrlle/4765d9c50b3391e48d1d836edbbe282c to your computer and use it in GitHub Desktop.
Java ADT

Java ADT

This pattern allows one to use "ADT" in Java. You publish a TileEvent, and you use instanceof to know which kind of event it is.

TileEvent tileEvent = (TileEvent) object;
if (tileEvent instanceof TileEvent.Set) {
    TileEvent.Set event = (TileEvent.Set) tileEvent;
    System.out.printf("Set Event at %s on level %s with sprite %s",
            event.getPosition(), event.getLevel(), event.getSprite());
}
import java.awt.*;
import [Sprite, SpriteLevel...];
public abstract class TileEvent {
private Point position;
private TileEvent(Point position) {
this.position = position;
}
public Point getPoint() {
return position;
}
public class Set extends TileEvent {
private Sprite sprite;
private SpriteLevel level;
public Set(Point position, Sprite sprite, SpriteLevel level) {
super(position);
this.sprite = sprite;
this.level = level;
}
public Sprite getSprite() {
return sprite;
}
public SpriteLevel getLevel() {
return level;
}
}
public class Clear extends TileEvent {
private SpriteLevel level;
public Clear(SpriteLevel level) {
super(position);
this.level = level;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment