多平台统一管理软件接口,如何实现多平台统一管理软件接口
282
2022-11-25
Java 泛型全解析
泛型简介
什么是泛型?
参化类型,数是JDK1.5的新特性。(定义泛型时使用参数可以简单理解为形参),例如List
编译时的一种类型,此类型仅仅在编译阶段有效,运行时无效.例如List
为什么要使用泛型?
泛型是进行类型设计或方法定义时的一种约束规范,基于此规范可以:
提高编程时灵活性(有点抽象,后续结合实例理解)。
提高程序运行时的性能。(在编译阶段解决一些运行时需要关注的问题,例如强转)
说明:泛型应用相对比较简单,难点在泛型类或方法的设计上,通过这样的设计如何对现有类进行减法设计,提高类或方法的通用性.
泛型应用类型
泛型定义时常用方式有三种(可参考List 泛型类:class 类名<泛型,…>{} 泛型接口:interface 接口名<泛型,…>{} 泛型方法: <泛型> 方法返回值类型 方法名(形参){} 泛型类定义及应用 类泛型定义:(用于约束类中方法参数和方法返回值类型) class Array Object[] array=new Object[10]; public void add(T t){}//通过类泛型约束方法参数类型 public T get(int i){//通过类泛型约束方法返回值类型 return (T)array[i]; } } 泛型接口定义及应用 定义接口时指定泛型,用于约束接口方法参数类型以及方法返回值类 interface Task{//思考map中的泛型Map /** * 此方法用于执行任务 * @param arg 其类型由泛型参数Param决定 * @return 其类型由泛型参数result决定 */ Result execute(Param arg); } 泛型接口应用实践 class ConvertTask implements Task @Override public Integer execute(String arg) { // TODO Auto-generated method stub return Integer.parseInt(arg); } } 泛型定义及应用 泛型方法中的泛型仅仅应用于当前方法,主要应用于一些静态方法,当然非静态方法也可以应用。 class ObjectFactory{ /**泛型方法*/ public static return (T)cls.newInstance(); } } 泛型应用通配符应用 无界限定通配符 泛型无界通配符使用”?”进行表示,可以代表一种任意参数类型(实参类型)。一般应用于变量的定义。例如:Class> c1; Class> c=Class.forName("java.util.Date"); 上届界限定通配符 泛型上届限定符通过“ extends 类型>”方式进行实现,主要用于方法参数或方法的返回值类型,例如: static void doPrint(List extends CharSequence> list){ System.out.println(list); } 下届限定通配符 泛型下届限定符通过“ super 类型>”方式进行实现,主要用于方法参数或方法的返回值类型,例如: static void doPrint(Set super Integer> set){ System.out.println(list); } 泛型类型擦除实践分析 泛型是编译时的一种类型,在运行时无效,运行时候都会变成Object类型,例如: ArrayList list.add("A"); //list.add(100);//直接不可以 //通过反射将100添加到集合 list.getClass().getMethod("add", Object.class).invoke(list, 100); System.out.println(list); 总结(Summary) 本小节对泛型的定义,应用场景,应用类型以及泛型的类型擦出进行了分析和实践,希望在后续项目实践中对泛型有一个更好的认识。 以上就是Java 泛型全解析的详细内容,更多关于Java 泛型的资料请关注我们其它相关文章!
泛型类:class 类名<泛型,…>{}
泛型接口:interface 接口名<泛型,…>{}
泛型方法: <泛型> 方法返回值类型 方法名(形参){}
泛型类定义及应用
类泛型定义:(用于约束类中方法参数和方法返回值类型)
class Array
Object[] array=new Object[10];
public void add(T t){}//通过类泛型约束方法参数类型
public T get(int i){//通过类泛型约束方法返回值类型
return (T)array[i];
}
}
泛型接口定义及应用
定义接口时指定泛型,用于约束接口方法参数类型以及方法返回值类
interface Task{//思考map中的泛型Map
/**
* 此方法用于执行任务
* @param arg 其类型由泛型参数Param决定
* @return 其类型由泛型参数result决定
*/
Result execute(Param arg);
}
泛型接口应用实践
class ConvertTask implements Task
@Override
public Integer execute(String arg) {
// TODO Auto-generated method stub
return Integer.parseInt(arg);
}
}
泛型定义及应用
泛型方法中的泛型仅仅应用于当前方法,主要应用于一些静态方法,当然非静态方法也可以应用。
class ObjectFactory{
/**泛型方法*/
public static
return (T)cls.newInstance();
}
}
泛型应用通配符应用
无界限定通配符
泛型无界通配符使用”?”进行表示,可以代表一种任意参数类型(实参类型)。一般应用于变量的定义。例如:Class> c1;
Class> c=Class.forName("java.util.Date");
上届界限定通配符
泛型上届限定符通过“ extends 类型>”方式进行实现,主要用于方法参数或方法的返回值类型,例如:
static void doPrint(List extends CharSequence> list){
System.out.println(list);
}
下届限定通配符
泛型下届限定符通过“ super 类型>”方式进行实现,主要用于方法参数或方法的返回值类型,例如:
static void doPrint(Set super Integer> set){
System.out.println(list);
}
泛型类型擦除实践分析
泛型是编译时的一种类型,在运行时无效,运行时候都会变成Object类型,例如:
ArrayList
list.add("A");
//list.add(100);//直接不可以
//通过反射将100添加到集合
list.getClass().getMethod("add", Object.class).invoke(list, 100);
System.out.println(list);
总结(Summary)
本小节对泛型的定义,应用场景,应用类型以及泛型的类型擦出进行了分析和实践,希望在后续项目实践中对泛型有一个更好的认识。
以上就是Java 泛型全解析的详细内容,更多关于Java 泛型的资料请关注我们其它相关文章!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~