闲来无事,说一个简单的泛型知识吧
泛型,别称为:参数化类型
开发过程中,我们可能都用过泛型,但是可能很少写过泛型。
很普遍的用法就是 List< T >,还有 dao 的增删改查操作。
从而我们能够总结出来,其实泛型就是为了将一系列相同的操作作为一个模板去应用,减少不必要的代码。
比如我们要对 string 数组操作增加,删除,要对 int 数组操作增加,删除,这个时候直接定义数组 list,然后把数组类型传入进去,即可对该类型数组进行操作。
为了更好的理解泛型的好处,我们先来假设如果没有泛型,那么我们的代码应该怎么写:
StringList list = new StringList(); IntergerList list = new IntergerList();
从以上代码可以看出,有多少种类型,就要有多少种对应的数组类型,这样便显得代码特别糟乱和冗余。
下面祭出简单的泛型定义,简单的使用示例:
package com.gxl.butt; /** *Created by guoxiaolin on 2018/11/26. */ public class Students< T > { private T score; public void setScore(T data){ this.score = data; } public T getScore(){ return this.score; } public static void main(String[] args){ Students< MathScore > scoreStudents1 = new Students<>(); MathScore mathScore = new MathScore(); mathScore.setId(1L); mathScore.setNum(89L); Students< EnglishScroe > scoreStudents2 = new Students<>(); EnglishScroe englishScroe = new EnglishScroe(); englishScroe.setId(2L); englishScroe.setNum(90L); scoreStudents1.setScore(mathScore); scoreStudents2.setScore(englishScroe); System.out.println(scoreStudents1.getScore().getName() + " scroe :" + scoreStudents1.getScore().getNum()); System.out.println(scoreStudents2.getScore().getName() + " scroe :" + scoreStudents2.getScore().getNum()); } }
接着,我做个简单的小备注,那就是,泛型是在编译期就完成任务,即在运行期,其实已经不存在泛型了,所有泛型在编译期就已经固定好具体类型了,就我的理解,泛型只是便于码农理解和编码而已。哈哈,是不是,很骚气的操作呢?
其实吧,写代码有时候你会发现你一旦理解了,很多东西就变得特别容易。
而且说实话,本猿,真的很少写泛型代码,不知道是我接触的项目太 low,还是水平太 low,反正就是很少用到。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于