当前位置: 首页 > news >正文

深圳罗湖区住房和建设局网站/营销型网站建设公司

深圳罗湖区住房和建设局网站,营销型网站建设公司,常见的网站首页布局有哪几种,网页首页代码/*** 泛型的前世今生(泛型类的使用)* 【学习结果】1,了解泛型类,泛型方法,泛型接口的定义体现形式。2,自定义泛型类,体会泛型前和泛型后的区别★★★★★【目标:自定义泛型】1,没有泛型之…
/** *    泛型的前世今生(泛型类的使用) *    【学习结果】     1,了解泛型类,泛型方法,泛型接口的定义体现形式。     2,自定义泛型类,体会泛型前和泛型后的区别★★★★★ 【目标:自定义泛型】 1,没有泛型之前,对于不确定的对象类型,是通过Object类型多态方式解决的。          弊端:当对象提升为Object后,需要向下转型才可以使用对象的内容。          而转型就会有运行发生ClassCastException异常的风险。    2,有了泛型后,将不确定的类型定义成参数,把Object替换成参数类型。         好处是:1.调用者在使用时必须先明确类型,如果操作的对象类型不符符合,直接编译失败。   2.类型符合,使用对象特有方法时,不需要进行强制转换。 3,泛型类,泛型方法,泛型接口的体现。 4,注意: 4.1 类上的泛型是在创建该类对象时进行类型明确。 4.2 静态方法无法访问类上定义的泛型,如果需要泛型,只能定义在方法上。 */ public class GenericDemo2 { public static void main(String[] args) { //part2: //        ObjTool tool = new ObjTool(); //        tool.setObj("hehe"); //        String str = tool.getObj();    //编译出错,原因在于传参时存的是Obj类型,向上造型. //        String str = (String) tool.getObj(); //        System.out.println(str); //用户传入数字6 //        tool.setObj(6);    //编译没问题,因为6也造型为Object,语法上没问题. //        String six = (String) tool.getObj();    //我们用同样的方法取数值发现 //java.lang.ClassCastException: 类型转换异常 /*JDK1.5之前,就是用Object这样的办法,来扩展类型  *但是在需要特有功能时,需要强转,麻烦.另外还有可能引发运行异常*/ //part3: ObjTool<String> tool = new ObjTool<String>(); tool.setObj("haha"); String str = tool.getObj();    //1.无需强转了 //        tool.setObj(6);    //2.编译失败.类型不匹配,编译就报错,避免了运行时的类型异常. } } /**part4: 将曾经的模拟队列数据结构加上泛型 *    定义自制队列数据结构 *    模拟用  遵循先进后出 */ class MyQueue<Q> { /*封装一个链表数据结构*/ private LinkedList<Q> queue; /*注意:初始化MyStack * new一个链表数据结构的列表*/ public MyQueue(){ queue = new LinkedList<Q>(); } //模拟queue添加元素的方法(栈添加的是尾部的元素,也就是先进入的元素放在尾部) public void add(Q obj){ queue.addFirst(obj); //注意:存入的元素顺序,每一个在下一个的前面位置存放. } //模拟queue获取元素的方法(栈获取的是尾部的元素,也就是先入的元素) public Object get(){ return queue.removeLast(); //注意1.因为是模拟队列,不能用LinkedList的get方法,那样不会移除头部的元素. //     2.移除的是每次尾部的元素.根据上面add方法所述,即最先进入的元素在尾部,所以会先移除. //     这样才符合栈的数据结构特点: 先进先出. 或者说后进后出. } //判断stack是否为空 public boolean isEmpty(){ return queue.isEmpty(); } } /** *    part1: *    定义一个工具,对对象进行操作,比如设置和获取 *    注意:现在的Tool只能操作String,如果现在还需要操作Integer类型的获取和设置. *    那么需要在建立一个类,定义成Tool2 get ,setInteger方法,显然很麻烦. *     那么就需要把String和Integer的共性部分向上抽取,即共性类型Object类型. *    所以可以写成如下ObjTool.  看part2: *    part3: jdk1.5有了新技术,泛型,改成如下这样。 *    类中操作的对象确定不?不确定,用Object,需要转型,运行容易出异常。不爽。 *    在定义时,就将不确定的对象的类型,定义成参数。由使用该类的调用者来传递对象类型。 */ class ObjTool <T>{    //将泛型定义在类上,叫做泛型类 private T obj; public T getObj() { return obj; } public void setObj(T obj) { this.obj = obj; } } /*class ObjTool {    //实验完毕注释掉 part2 private Object obj; public Object getObj() { return obj; } public void setObj(Object obj) { this.obj = obj; } }*/ /*class Tool {    //实验完毕注释掉 private String str; *//** * 获取str * @return *//* public String getStr() { return str; } *//** * 设置str * @param str *//* public void setStr(String str) { this.str = str; } }*/

 

转载于:https://www.cnblogs.com/zyjcxc/p/5453424.html

相关文章: