import java.util.*; import java.io.*; /* Esimerkki jokerien käytöstä geneerisessä listassa * @author Miika Nurminen * @version 1.0, 09.04.2005 */ abstract class Elain { public String nimi; public Elain(String nimi) {this.nimi=nimi;} public abstract void aantele(PrintStream out); public String toString() { return this.getClass()+" "+nimi; } public String getNimi() {return nimi;} } class Kissa extends Elain { public Kissa(String nimi) {super(nimi);} public void aantele(PrintStream out) { out.println("miau"); } } class Koira extends Elain { public Koira(String nimi) {super(nimi);} public void aantele(PrintStream out) { out.println("hau hau!"); } } class Kotka extends Elain { public Kotka(String nimi) {super(nimi);} public void aantele(PrintStream out) { out.println("kriiiiiiiiik!"); } } /** * * @author minurmin */ public class Elaintarha { ArrayList a = new ArrayList(); /** Creates a new instance of ElainGen */ public Elaintarha() { } public void lisaa(Elain e) { a.add(e); } /** * Geneerinen metodi - Tulostaa annetun eläinkokoelman * @param c tulostettava kokoelma - huomaa jokerin käyttö */ public void tulosta(PrintStream out, Collection c) { for (Elain e : c) { out.print(e.getClass().getName()+" "+e.getNimi()+": "); e.aantele(out); } } /** * Tulostaa eläintarhan */ public void tulosta(PrintStream out) { tulosta(out, a); /* for (Elain e : a) { out.print(e.getClass().getName()+" "+e.getNimi()+": "); e.aantele(out); }*/ } public static void main(String[] args) { Elaintarha e = new Elaintarha(); Koira ressu = new Koira("Ressu"); e.lisaa(new Kissa("Karvinen")); e.lisaa(ressu); e.lisaa(new Kotka("Gwaihir")); System.out.println("Eläintarha"); e.tulosta(System.out); java.util.Vector koirapuisto = new java.util.Vector(); koirapuisto.add(new Koira("musti")); koirapuisto.add(ressu); System.out.println("Koirapuisto"); e.tulosta(System.out,koirapuisto); } }