Java高级 —— 泛型
Posted 行稳方能走远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java高级 —— 泛型相关的知识,希望对你有一定的参考价值。
泛型概念
- 问题引入:如果我们需要产生多个对象,每个对象的逻辑完全一样,只是对象内的成员啊变量的类型不同。那我们如何去做?两种解决办法:
方法一:
class Cls1
{
int a;
public Cls1(int a){//构造方法
this.a = a;
}
public int getData(){
return a;
}
}
class Cls2
{
String b;//仅仅类型不同 小数、浮点数... 类的膨胀,重用性差
public Cls2(String b){//构造方法
this.b = b;
}
public String getData(){
return b;
}
}
public class test {
public static void main(String[] args) {
Cls1 cls1 = new Cls1(10);
System.out.println(cls1.getData());
Cls2 cls2 = new Cls2("你好呀!");
System.out.println(cls2.getData());
}
}
方法二:
class Cls1
{
Object a;//Object是所有数据类型的父类
public Cls1(Object a){//构造方法
this.a = a;
}
public Object getData(){
return a;
}
}
public class test {
public static void main(String[] args) {
Cls1 cls1 = new Cls1(10); //1.5版本以下运行出错,询问回复int不是类,是数据类型,String是类
System.out.println(cls1.getData());//Integer才是类
Cls1 cls2 = new Cls1("你好呀!");
System.out.println(cls2.getData());
//System.out.println((int)cls2.getData());这样强制转换 编译通过但运行出错!ppt有讲
}
}
这里可以使用泛型的解决方法:
创建工程时选择1.5版本JDK及以上
class Cls1<T>
{
T a;//Object是所有数据类型的父类
public Cls1(T a){//构造方法
this.a = a;
}
public T getData(){
return a;
}
}
public class test {
public static void main(String[] args) {
Cls1<Integer> cls1 = new Cls1<Integer>(10);
System.out.println(cls1.getData());
Cls1<String> cls2 = new Cls1<String>("你好呀!");
System.out.println(cls2.getData());
}
}
泛型可设置多个类型参数
泛型继承和泛型接口
限制泛型可用类型
泛型通配的方式
泛型方法
泛型方法限制泛型可用类型
以上是关于Java高级 —— 泛型的主要内容,如果未能解决你的问题,请参考以下文章