13 泛型

绝地灬酷狼 2021-09-30 23:42 287阅读 0赞
  • 泛型类声明
  • 使用泛型类声明对象
  • 泛型接口

泛型 主要目的是建立具有类型安全的集合框架,如链表,散列映射等数据结构。

而且不用强制类型转化,即不要求进行运行时类型检查。

一:泛型类声明

  1. class 名称<泛型列表>
  2. 如下:E是泛型,我们并没有指定E是什么类型,它可以是任何对象或接口,不能是基本数据类型
  3. 也可以不用E表示,使用其他标识符也行,不过要和熟悉的类型名称有所区别
  4. 泛型列表给出的泛型可以作为类的成员变量的类型,方法的类型,局部变量的类型
  5. class A<E>

比如设计一个锥,锥只关心它的底面积是多少,不关心底的具体类型,只关心是用底面积和高计算出的自身的体积

  1. public class Cone<E> {
  2. double height;
  3. E bottom; //用泛型类E声明对象bottom
  4. public Cone (E b) {
  5. bottom=b;
  6. }
  7. public void setHeight(double h) {
  8. height=h;
  9. }
  10. public double computerVolume() {
  11. //泛型变量只能调用从Object类继承的或重写的方法
  12. String s=bottom.toString();
  13. double area=Double.parseDouble(s);
  14. return 1.0/3.0*area*height;
  15. }
  16. }

注意:泛型变量只能调用从Object类继承的或重写的方法

二:使用泛型类声明对象

要用具体的类型替换<>里面的泛型,比如这里是用Circle替换了E

  1. 使用了带参数的构造方法,原本是这样的
  2. Cone<E> cone=new Cone<E>(E b);
  3. Cone<Circle> cone=new Cone<Circle>(new Circle());//创建一个(圆)锥对象
  4. public class Circle {
  5. double area,radius;
  6. Circle(double r) {
  7. radius=r;
  8. }
  9. //重写Object类的toString()方法
  10. public String toString() {
  11. area=radius*radius*Math.PI;
  12. return ""+area;
  13. }
  14. }

三:泛型接口

  1. 声明,泛型类可以使用泛型接口
  2. interface A<E>
  3. interface Computer<E,F> {
  4. void makeChorus(E x,F y);
  5. }
  6. class Chorus<E,F> implements Computer<E,F> {
  7. public void makeChorus(E x,F y) {
  8. x.toString();
  9. y.toString();
  10. }
  11. }
  12. class 乐器 {
  13. public String toString() {
  14. System.out.println("|3 5 1-|1 3 5-|12 35 2-|");
  15. return "";
  16. }
  17. }
  18. class 歌手 {
  19. public String toString() {
  20. System.out.println("你和我,我和你,同住地球村");
  21. return "";
  22. }
  23. }
  24. public class Example13_2 {
  25. public static void main(String args[ ]) {
  26. Chorus<歌手 ,乐器> model=new Chorus<歌手,乐器>();
  27. 歌手 pengliyuan=new 歌手();
  28. 乐器 piano=new 乐器();
  29. //要使用makeChorus方法,要有泛型列表E和F声明的对象,即歌手和乐器声明的对象
  30. model.makeChorus(pengliyuan,piano);
  31. }
  32. }

注意:Object类的toString方法要被重写,要不返回的是地址

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读