栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中泛型的理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中泛型的理解

Java中泛型的理解

所谓泛型,是指使程序员定义安全的类型,能够避免强制转换类型时出现的错误不被编译器识别,而运行时却报错。

以下是个人的理解:

在编写Python类或者函数的时候(主要是函数),无需告诉程序返回数据的类型,直接return就行。有很多语言也都是无需声明返回数据的类型的,如PHP,PHP常用于编写接口,然后Java来调用。如果这个接口没有告诉Java接口返回数据的类型的话,Java在编写代码的时候,是不会报错的。举个例子,但如果Java需要的是整型数据,接口却返回了一个浮点型数据,那程序运行就会报错。

这里就体现了泛型的重要性。

泛型的定义

直接上我自己学习写的泛型定义代码

public class Test {
    T over;
    S str;


    public T getOver() {
        return over;
    }

    public void setOver(T over) {
        this.over = over;
    }

    public void setStr(S str) {
        this.str = str;
    }

    public S getStr() {
        return str;
    }

    public static void main(String[] args) {
        Test b = new Test();
        b.setOver(true);

        boolean b0 = b.getOver();
        System.out.println(b0);

        Test s = new Test();
        s.setStr("huangg");
        String str = s.getStr();
        System.out.println(str);
//       int i = b.getOver();
//        Father f = new Child(1, "2");
//        Child c = new Child(1, false);

    }
}

现在来记录学习体会:

  1. public class Test {
        T over;
        S str;
    

    先看这几行代码,在定义类名Test时, 写了这个泛型的表达方式,告诉编译器定义的是一个泛型类

    接着,定义了两个泛型的成员变量over和str。如果不好理解的话,可以将这两行代码理解为:

    int over;
    String str;
    

    效果和上面差不多,只是上面的变量不知道是啥类型的。

  2.     public T getOver() {
            return over;
        }
    
        public void setOver(T over) {
            this.over = over;
        }
    
        public void setStr(S str) {
            this.str = str;
        }
    
        public S getStr() {
            return str;
        }
    
    

    这是在定义set和get方法,注意get方法的时候,要写返回值的类型,分别是T和S,与泛型一致就行了。

  3.     public static void main(String[] args) {
            Test b = new Test();
            b.setOver(true);
    
            boolean b0 = b.getOver();
            System.out.println(b0);
    
            Test s = new Test();
            s.setStr("huangg");
            String str = s.getStr();
            System.out.println(str);
    //       int i = b.getOver();
    //        Father f = new Child(1, "2");
    //        Child c = new Child(1, false);
    
        }
    

    这是主方法,Test b = new Test();主方法首先实例化对象,看这里,在实例化对象的时候,就要定义泛型类型了,第一个是布尔值,第二个是字符串,然后将作为布尔值的over值用set方法设置为true,get方法可以取值,下面的第二个变量用同样的方式取值和设置值。

这就是泛型类的定义方法,和常规类差别不大,但是要注意的是,泛型的名字最好不要和已有的类型重名,这样容易出错。泛型可以有一个,也可以有多个。

泛型的其他用法

除了上述使用方法外,还可以

  • 限制泛型的可用类型,如下:

    public class Text {}

    这里的泛型就限定只能是List类型的子类

  • 使用类型通配符?,如public class Text {}

  • 继承泛型类和实现泛型接口。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/601359.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号