闲来无事,说一个简单的泛型知识吧
泛型,别称为:参数化类型
开发过程中,我们可能都用过泛型,但是可能很少写过泛型。
很普遍的用法就是 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,反正就是很少用到。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于