public interface Player<A extends Action, R extends Result> {
default public void onPostAction(final Player<A, R> target, final A action, final R result) { }
}
public class RPSHumanPlayer extends RPSPlayer {
@Override
public void onPostAction(final RPSPlayer target, final RPSGesture gesture, final RPSResult result) {
}