JAVA基础-泛型

举报
Photon 发表于 2021/04/01 12:38:19 2021/04/01
1.9k+ 0 0
【摘要】 泛型产生背景参考链接依赖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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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