package com.yoursway.utils.gemstones; public class SlotImpl<F extends Facelet<G>, G extends Gemstone<G>> implements Slot<F> { private final int index; private final String description; private final FaceletFactory<F, G> factory; public SlotImpl(int index, String description, FaceletFactory<F, G> factory) { if (description == null) throw new NullPointerException("description is null"); if (factory == null) throw new NullPointerException("factory is null"); this.index = index; this.description = description; this.factory = factory; } int index() { return index; } @Override public String toString() { return "#" + index + " " + description; } public F create(G gemstone) { return factory.create(gemstone); } }