JAVA基础-泛型

举报
Photon 发表于 2021/04/01 12:38:19 2021/04/01
【摘要】 泛型产生背景参考链接依赖Java特性:Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常. 对于集合类,如果不使用泛型,那么什么类型的对象都能存入。在取出时,因为不知道对象类型,向下转型时很有可能报错。定义泛型类/* 1:把泛型定义在类上 2:类型变量定义在类上,方法中也可以使用 */public class Obje...

泛型

产生背景

参考链接


依赖Java特性:

Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常.


对于集合类,如果不使用泛型,那么什么类型的对象都能存入。

在取出时,因为不知道对象类型,向下转型时很有可能报错。


定义

泛型类

/*
    1:把泛型定义在类上
    2:类型变量定义在类上,方法中也可以使用
 */
public class ObjectTool<T> {
private T obj;
​
public T getObj() {
return obj;
    }
​
public void setObj(T obj) {
this.obj = obj;
    }
}
​
public static void main(String[] args) {
        //创建对象并指定元素类型
        ObjectTool<String> tool = new ObjectTool<>();
​
        tool.setObj(new String("钟福成"));
        String s = tool.getObj();
        System.out.println(s);
​
​
        //创建对象并指定元素类型
        ObjectTool<Integer> objectTool = new ObjectTool<>();
        /**
         * 如果我在这个对象里传入的是String类型的,它在编译时期就通过不了了.
         */
        objectTool.setObj(10);
        int i = objectTool.getObj();
        System.out.println(i);
    }
​
​
​
​


泛型方法

使用背景

仅仅某个方法需要泛型使用,而不需要整个类上定义泛型。外界仅仅是关心该方法,不关心其他的属性。

  //定义泛型方法..
public <T> void show(T t) {
        System.out.println(t);
​
    }
​
public static void main(String[] args) {
        //创建对象
        ObjectTool tool = new ObjectTool();
​
        //调用方法,传入的参数是什么类型,返回值就是什么类型
        tool.show("hello");
        tool.show(12);
        tool.show(12.5);
​
    }
​
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。