分类 电工作业 焊工作业 高处作业 制冷作业 其它作业 特种设备培训

Java自定义的应用技巧

 

我们在JAVA中处处都用到了范型,JAVA中的范型是从C++模板继承来的,不过JAVA的范型的功能远远没有C++那么强大。
   
    我们知道在C++中模板可以很方便的代替任意类型的数据。如下:
   
    1. template<class T>
   
    2.
   
    3. void show(T x)
   
    4.
   
    5. {
   
    6.
   
    7. cout《x《endl ;
   
    8. }
   
    上面的T可以代表任意类型的数据,这样不是大大减少了函数的重载次数,提高了效率呢。
Java是从C++过来的,理解了C++,java也不在话下。
   
    在
Java中自定义范型也可以用在方法上。如下:
   
    1、
   
    //这样声明的范型可以代替任意类型数据,我们市场用到的键值对Map.Entry<K,V> 不就是给予范型的吗?
   
    K V都可以代替任意类型的值,但是在java中范型的实际类型必须是引用类型。
   
    1.   <K,V> void get(K k,V v)
   
    2.
   
    3.  {
   
    4.
   
    5.
   
    6.  }
   
    2、Java中的范型不能像C++那么灵活。
   
    1. <T>  T  add(T a,T b)
   
    2.
   
    3. {
   
    4.
   
    5.  //return  a+b   ;//很多人以为java也想C++一样可以这样 ,但是不可以 .
   
    6.
   
    7.  return  null;
   
    8.  }
   
    这个返回的null 也是有类型限制的,比如上面的a b分别是Integer和String 那么就会取他们共同的基类Object做为返回值类型,其他的同理。
   
    3、实现任意类型的数组的成员值的
交换,注意在自定义范型中范型的实际类型只能是引用数据类型,不能是基本数据类型。
   
    1.  public  static <T> void  swap(T[]a,int x,int y)
   
    2.  {
   
    3.  T  tem  =a[x]  ;
   
    4.  a[x]=a[y]  ;
   
    5.  a[y]=tem ;
   
    6.
   
    7.   }
   
    上面这个方法如果我swap(new Integer[]{1,2,3,4,5},1,2); //这样就会自动
交换下标1 2的值
   
    但是这样调用就错了swao(new int[]{1,2,3,5,6},2,3) ; //所以说Java的范型的实际类型只能是引用数据类型
   
    4、
   
    <T extends String> 表示类型只能是String或者String的派生类
   
    <T super String > 表示范型类型只能是String或者String的父类
   
    用法同上
   
    5、下面这个函数利用范型来实现类型自动转换的功能。
   
    1. public static  <T> T autoConvert(Object obj)
   
    2. //因为返回值是 T标识任意类型 所哟可以 将返回结果赋值给任意类型对象
   
    3.  {
   
    4.  return (T)obj;
   
    5.  }
   
    6.  Object  obj=="";
   
    7.
   
    8.  String str=autoConvert(obj);
   
    可以完成自动转换,因为范型T代表任意类型,因此他可以赋值给String类型的对象。
   
    6、将任意类型的对象填充到任意类型的数组中,与是fillArray(new Integer[]{2,3,4},"ddd"); 这样调用是正确的,这样做忽略类型限制。
   
    1. public  static <T> void  fillArray(T[] a,T b)  //将任意一个对象填充到任意类型的数组
   
    2.{
   
    3. for(int i =0;i<a.length;i++)
   
    4. {
   
    5. a[i] =b ;
   
    6. }
   
    7.}
   
    7、以自定义范型的形式显示一个集合的数据,下面一个是利用自定义范型一个是利用通配符来实现,但是不同的是利用通配符操作的集合不能向集合中插入元素
   
    但是自定义范型却可以。原因是通配符代表的集合我们不知道集合内部具体元素 是什么类型 所以 不能对集合进行add操作。
   
    1. public static  <T> void showCollection(Collection<T> col,T  obj)  //利用范型来输出任意类型集合
   
    2. {
   
    3.  col.add(obj) ;
   
    4.  for(T a:col)
   
    5.  {
   
    6.  System.out.println(a);
   
    7.  }
   
    8.  }
   
    9.
   
    10.  public static void showCollection(Collection<?> col)  //利用范型来输出任意类型集合
   
    11. {
   
    12.  for(Object obj:col)
   
    13.  {
   
    14.  System.out.println(obj);
   
    15.  }
   
    16.  }
   
    8、如果一个类中多个方法都需要范型,那么就是用类级别的范型。
   
    例如:
   
    1. class  A<E>
   
    2.
   
    3. {
   
    4.
   
    5.  public void  add(E obj){}
   
    6.
   
    7.  public  E  get(){}
   
    8.
   
    9.  private E data;
   
    10. }
   
    这样声明范型和在函数前面声明其实是一样的,只不过是在类的级别上作用于整个类而已。
   
    9、 要注意范型只是给编译器看的。
   
    也就是说Vector<Integer> Vector<String> 他们用到的都是同一份字节码,字节码只有class文件加载到内存中的时候才有。
   
    所以在一个类中下面2个方法不能同时存在。
   
    void show(Vector<Integer>) {}
   
    void show(Vector<String>){}
   
    这两个方法都不是重载,因为编译后要去掉类型信息。


   >>学课在线网课试听.报名        >>学课在线智能题库.模拟做题       >>直播课程       >>录播课程

课程名称
课程免费试听
课程名称
课程免费试听
课程名称
课程免费试听
初级会计师

一级建造师

执业药师

中级会计师

二级建造师

护士资格证

注册会计师

一级造价工程师

健康管理师

经济师考试

监理工程师

考研辅导课

银行从业

安全工程师

自考课程

基金从业

一级消防工程师

心理咨询师

企业人力资源管理师

法律职业资格考试

公共营养师

社会工作者

消防设施操作员

保育员

教师资格证

成人高考

育婴师

公务员培训

文职培训

英语四六级

计算机软考
养老护理员
税务师培训

房产经纪人
咨询工程师

其它课程>>



重要提醒!!内容中联系方式并非本站联系方式,报名咨询的学员请与下面最新联系方式联系我们咨询报名-以免损失!
>>长期招聘兼职招生代理人员,项目合作,团报优惠咨询,有意者请联系我们 >>咨询:13312524700(可加微信)。

昆明学历中心:◆咨询电话:0871-65385921、13312528471 赖老师、钱老师(微信报名:17787865775)点击这里给我发消息


云南地州中心:◆咨询电话:0871-65385921、17787865775 冯老师、 王老师(微信报名:17787865775)点击这里给我发消息


总部报名地址: ◆昆明市-五华区教场东路莲花财富中心10楼;网课试听:ke.xuekaocn.cn   点击这里立即咨询我们



地州分校:   大理分校   丽江分校   迪庆分校   怒江分校   红河分校   临沧分校   玉溪分校   文山分校   保山分校   德宏分校   昭通分校   普洱分校   版纳分校 【各地州学员请加老师微信咨询报名,电话(微信):133-1252-4700】;2021年云南省成人高考>>立即报名



职业技能考证:心理咨询师、健康管理师、茶艺师等更多>◆咨询电话:133 1252 4700(微信)点击这里咨询我们  

公考培训咨询:◆国考云南省考公务员/事业单位面授培训,咨询电话:133 1252 4700 (微信)点击这里立即咨询我们






温馨提示:因考试政策、内容不断变化与调整,学课在线网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

免责声明:以上内容仅代表原创者观点,其内容未经本站证实,学课在线网对以上内容的真实性、完整性不作任何保证或承诺,转载目的在于传递更多信息,由此产生的后果与学课在线网无关;如以上转载内容不慎侵犯了您的权益,请联系我们QQ:1536696595,我们将会及时处理。




网友评论