为什么需要使用泛型?
1.代码复用
2.保证类型安全
3.编程的便利
第一部分,先说说代码复用
1)建立一个Animal的父类
package com.ray.test;
public class Animal {
private String name="Animal";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2)建立连个Animal的子类Cat和Dog
package com.ray.test;
public class Cat extends Animal {
private String name="Cat";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.ray.test;
public class Dog extends Animal {
private String name="Dog";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3)建立一个测试类
使用泛型前:
package com.ray.test;
public class Test2 {
private Animal animal;
private Cat cat;
private Dog dog;
public Test2(Animal animal, Cat cat, Dog dog) {
this.animal = animal;
this.cat = cat;
this.dog = dog;
}
public Animal getAnimal() {
return animal;
}
public void setAnimal(Animal animal) {
this.animal = animal;
}
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public static void main(String[] args) {
Test2 test2 = new Test2(new Animal(), new Cat(), new Dog());
System.out.println(test2.getAnimal().toString());
System.out.println(test2.getCat().toString());
System.out.println(test2.getDog().toString());
}
}
使用泛型后:
package com.ray.test;
public class Test<T> {
private T t;
public Test(T t) {
this.t = t;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public static void main(String[] args) {
Test<Animal> test = new Test<Animal>(new Animal());
Test<Cat> test2 = new Test<Cat>(new Cat());
Test<Dog> test3 = new Test<Dog>(new Dog());
System.out.println(test.getT().toString());
System.out.println(test2.getT().toString());
System.out.println(test3.getT().toString());
}
}
前后对比,代码简洁了不少,而且如果以后我不是使用Animal、Dog、Cat这些类,而是使用其他的类,我们也可以再次复用Test<T>这个类
第二部分,我们说说类型安全
没有使用泛型之前,list里面可以增加任何东西,下面就是其中一个例子,大家注意最后add的那个object,其实跟上面的那些完全不一样,但是没有报错
这样为我们使用这个list带来巨大的不变,因为很容易手贱就加了一个不是原来想要的东西进去
package com.ray.test;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
List list=new ArrayList();
list.add(new Animal());
list.add(new Dog());
list.add(new Cat());
list.add(new Test2());
}
}
使用泛型后,最后一个直接报错,这样对于代码在编译期间就可以识别出错误来,编程效率提高不少。
package com.ray.test;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
List<Animal> list=new ArrayList();
list.add(new Animal());
list.add(new Dog());
list.add(new Cat());
//下面直接报错
list.add(new Test2());
}
}
第三部分,我们承接上面的代码继续说下去,泛型对于编程的便利
因为确定了类型,我们使用这个list的时候,可以直接调用类型里面的方法,而且不需要强转,在1.4之前,是需要强转的
package com.ray.test;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
List<Animal> list=new ArrayList();
list.add(new Animal());
list.add(new Dog());
list.add(new Cat());
for (int i = 0; i < list.size(); i++) {
Animal animal = list.get(i);
animal.toString();
}
}
}
暂时泛型的第一节讲到这里,后面部分请继续关注
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
Java基础入门(四)-泛型、反射、注解
关于java泛型的总结: 从入门介绍到项目使用的实际经验归纳总结得出! 从jdk5到jdk8!
Java SE编程入门教程 java入门以及变量debug(共63页).pptx Java SE编程入门教程 java设计模式(共17页).pptx Java SE编程入门教程 java数组(共33页).pptx Java SE编程入门教程 java网络编程(共29页).pptx ...
实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门
1: Java基础语法 本步骤涵盖Java程序结构、开发环境搭建、常量与变量、运算符、流程控制、数组和方法等Java基础语法的内容。通过本步骤学习,可以掌握Java程序的执行流程,能够编写符合Java语法规则的程序。 2: Java...
Java泛型编程快速入门 Java泛型编程快速入门.docx
NULL 博文链接:https://wangsong76.iteye.com/blog/334871
绝对韩顺平老师的讲解视频!教学文件打包太大,就一个一个的上传了! avi格式的,最好用KMPlayer来播放,下载地址:https://www.kmplayer.com/home 后续还上传,韩顺平老师教学的源代码!
Java基础入门自学课件 第11章 泛型(共4页).ppt
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员...本专栏主要为Java入门者提供实验参考。
推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 01.Java语言概述(共21页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 02.理解结构化程序设计_理解面向对象(共25页).ppt 推荐优质Java...
Java基础入门自学课件 第11章 泛型(共4页).rar
第 1 章 Java 开发入门,第 2 章 Java 编程基础,第 3 章 面向对象(上) ,第 4 章 面向对象(下),第 5 章 异常 ,第 6 章 Java API ,第 7 章 集合类,第 8 章 泛型,第 9 章 反射,第 10 章 IO(输入输出) ,...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
Java SE编程入门教程 java入门以及变量debug(共63页).pptx Java SE编程入门教程 java设计模式(共17页).pptx Java SE编程入门教程 java数组(共33页).pptx Java SE编程入门教程 java网络编程(共29页).pptx ...
自己收集的java编程笔记,关于集合类的知识,很有用
该资源对应博客泛型读书笔记-java基础入门必备中的代码的完整部分,代码只有两个文件,对应两个类,可自行修改值调试。
Java SE编程入门教程 java入门以及变量debug(共63页).pptx Java SE编程入门教程 java设计模式(共17页).pptx Java SE编程入门教程 java数组(共33页).pptx Java SE编程入门教程 java网络编程(共29页).pptx ...