fork download
  1. public class Main {
  2. public static void main(String[] args) {
  3. System.out.println(AntType.QUEEN.getAntTypeClass().getName());
  4. System.out.println(AntType.SCOUT.getAntTypeClass().getName());
  5. }
  6. }
  7.  
  8. final class AntType<T extends Ant> {
  9. public static final AntType<AntQueen> QUEEN = new AntType<>(AntQueen.class );
  10. public static final AntType<AntWarrior> WARRIOR = new AntType<>(AntWarrior.class );
  11. public static final AntType<AntGatherer> GATHERER = new AntType<>(AntGatherer.class);
  12. public static final AntType<AntScout> SCOUT = new AntType<>(AntScout.class );
  13.  
  14. private final Class<T> antTypeClass;
  15.  
  16. private AntType(Class<T> antTypeClass) {
  17. this.antTypeClass = antTypeClass;
  18. }
  19.  
  20. public Class<T> getAntTypeClass() {
  21. return antTypeClass;
  22. }
  23. }
  24.  
  25. interface Ant {}
  26. class AntWarrior implements Ant {}
  27. class AntGatherer implements Ant {}
  28. class AntScout implements Ant {}
  29. class AntQueen implements Ant {}
Success #stdin #stdout 0.09s 46856KB
stdin
Standard input is empty
stdout
AntQueen
AntScout