15.5 匿名内部类
泛型还可以应用于内部类以及匿名内部类。下面的示例使用匿名内部类实现了Generator接口:
Customer和Teller类都只有private的构造器,这可以强制你必须使用Generator对象。Customer有一个generator()方法,每次执行它都会生成一个新的Generator<Customer>对象。我们其实不需要多个Generator对象,Teller就只创建了一个public的generator对象。在main()方法中可以看到,这两种创建Generator的方式都在fill()中用到了。
由于Customer中的generator()方法,以及Teller中的Generator对象都声明成了static的,所以它们无法作为接口的一部分,因此无法用接口这种特定的惯用法来泛化这二者。尽管如此,它们在fill()方法中都工作得很好。
在第21章中,我们还会看到关于这个排队问题的另一个版本。
练习18:(3) 遵循BackTeller.java的形式,创建一个Ocean中BigFish吃LittleFish的例子。