1.宠物店管理系统的一个优化思路
老张在宠物店管理系统中写了一大堆Cat啊、Dog啊这样的宠物类,发现在这些类中有些信息使用的次数很少,甚至是一些字段很多情况下只能有一部分被使用,比如Cat的特征字段feature,有些时候需要用字符串类型,有些时候需要使用数值类型,于是定义了一堆strFeature,intFeature这样的东西,老张看到Java泛型的使用方法后心里琢磨了起来,如果使用泛型能不能简化Cat这样的类的结构呢?于是老张写出了测试程序:
public static void main(String[] args) {
Cat<String> cat = new Cat<>();
cat.setFeature("肥胖");
System.out.println(cat.desc());
Cat<Integer> cat2 = new Cat<>();
cat2.setFeature(13);
System.out.println(cat2.desc());
Cat<Double> cat3 = new Cat<>();
cat3.setFeature(12.1);
System.out.println(cat3.desc());
}
期望的输出为:
此猫猫是一只可爱的肥胖猫咪
此猫猫是一只体重为13的猫猫
此猫猫特征不明,有人认为它的特征为12.1
你能帮老张完成这个Cat类吗?
老张还想让所有的宠物都有生育方法,比如猫应该有方法Cat birth()来生一只小猫,狗能使用Dog birth()方法生一只小狗,能不能定义一个接口来完成这个事情,让实现这个接口的类都有适当的birth方法呢?
2.雄心万丈的老张
在开发过程中的顺风顺水让老张自我膨胀了起来,一天老张忽然觉得自己的团队成员应该有能力封装java的任何一个成熟类型,于是找到团队里的你,让你试着做一个团队自己的泛型类ArrayList,主要实现以下几个功能:
1. 必须是泛型类,能装下任何指定类型的数据
2. 必须可以进行空间扩展,空间不足的时候可以通过翻倍内部数据空间的方法得到更多的空间容纳新数据
3. 可以添加数据
4. 可以删除数据
5. 可以取指定位置的数据
6. 可以获得空间中有效数据的个数
7. 可以使用for枚举空间中所有数据
你能帮老张做到吗?