Hirdetés

Új hozzászólás Aktív témák

  • Davs

    tag

    válasz Karma #3015 üzenetére

    PetCreator:

    //: typeinfo/pets/PetCreator.java
    // Creates random sequences of Pets.
    package typeinfo.pets;
    406
    Thinking in Java
    Bruce Eckel
     
    import java.util.*;

    public abstract class PetCreator {
    private Random rand = new Random(47);
    // The List of the different types of Pet to create:
    public abstract List<Class<? extends Pet>> types();
    public Pet randomPet() { // Create one random Pet
    int n = rand.nextInt(types().size());
    try {
    return types().get(n).newInstance();
    } catch(InstantiationException e) {
    throw new RuntimeException(e);
    } catch(IllegalAccessException e) {
    throw new RuntimeException(e);
    }
    }
    public Pet[] createArray(int size) {
    Pet[] result = new Pet[size];
    for(int i = 0; i < size; i++)
    result[i] = randomPet();
    return result;
    }
    public ArrayList<Pet> arrayList(int size) {
    ArrayList<Pet> result = new ArrayList<Pet>();
    Collections.addAll(result, createArray(size));
    return result;
    }
    } ///:~

    ForNameCreator:

    //: typeinfo/pets/ForNameCreator.java
    package typeinfo.pets;
    import java.util.*;

    public class ForNameCreator extends PetCreator {
    private static List<Class<? extends Pet>> types =
    new ArrayList<Class<? extends Pet>>();
    // Types that you want to be randomly created:
    private static String[] typeNames = {
    "typeinfo.pets.Mutt",
    "typeinfo.pets.Pug",
    "typeinfo.pets.EgyptianMau",
    "typeinfo.pets.Manx",
    "typeinfo.pets.Cymric",
    Type Information
    407 
     
    "typeinfo.pets.Rat",
    "typeinfo.pets.Mouse",
    "typeinfo.pets.Hamster"
    };
    @SuppressWarnings("unchecked")
    private static void loader() {
    try {
    for(String name : typeNames)
    types.add(
    (Class<? extends Pet>)Class.forName(name));
    } catch(ClassNotFoundException e) {
    throw new RuntimeException(e);
    }
    }
    static { loader(); }
    public List<Class<? extends Pet>> types() {return types;}
    } ///:~

Új hozzászólás Aktív témák