1700457240
1700457241
public abstract class AbstractHumanFactory{
1700457242
1700457243
public abstract<T extends Human>T createHuman(Class<T>c);
1700457244
1700457245
}
1700457246
1700457247
注意,我们在这里采用了泛型(Generic),通过定义泛型对createHuman的输入参数产生两层限制:
1700457248
1700457249
❑必须是Class类型;
1700457250
1700457251
❑必须是Human的实现类。
1700457252
1700457253
其中的“?”表示的是,只要实现了Human接口的类都可以作为参数,泛型是JDK 1.5中的一个非常重要的新特性,它减少了对象间的转换,约束其输入参数类型,对Collection集合下的实现类都可以定义泛型。有关泛型的详细知识,请参考相关的Java语法文档。
1700457254
1700457255
目前女娲只有一个八卦炉,其实现生产人类的方法,如代码清单8-6所示。
1700457256
1700457257
代码清单8-6 人类创建工厂
1700457258
1700457259
public class HumanFactory extends AbstractHumanFactory{
1700457260
1700457261
public<T extends Human>T createHuman(Class<T>c){
1700457262
1700457263
//定义一个生产的人种
1700457264
1700457265
Human human=null;
1700457266
1700457267
try{
1700457268
1700457269
//产生一个人种
1700457270
1700457271
human=(Human)Class.forName(c.getName()).newInstance();
1700457272
1700457273
}catch(Exception e){
1700457274
1700457275
System.out.println(“人种生成错误!”);
1700457276
1700457277
}
1700457278
1700457279
return(T)human;
1700457280
1700457281
}
1700457282
1700457283
}
1700457284
1700457285
人种有了,八卦炉也有了,剩下的工作就是女娲采集黄土,然后命令八卦炉开始生产,其过程如代码清单8-7所示。
1700457286
1700457287
代码清单8-7 女娲类
1700457288
1700457289
public class NvWa{
[
上一页 ]
[ :1.70045724e+09 ]
[
下一页 ]