Abbott

身体和灵魂,必须有一个在路上

分享技术,分享生活


Welcome Abbott's world

Java泛型知识

泛型的出现

在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

使用泛型的好处

泛型的好处是在编译的时候==检查类型安全==,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。

规则限制

  1. 泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
  2. 同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
  3. 泛型的类型参数可以有多个。
  4. 泛型的参数类型可以使用extends语句,例如.习惯上称为“有界类型”
  5. 泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(“java.lang.String”);

使用总结

1、==创建对象的时候要指定泛型的具体类型==

2、创建对象时可以不指定泛型的具体类型(和创建集合对象一眼)。默认是Object,例如我们使用集合存储元素的时候没有使用泛型就是那么参数的类型就是Object

3、类上面声明的泛型只能应用于==非静态成员函==数,如果静态函数需要使用泛型,那么

需要在函数上独立声明。

4、如果建立对象后指定了泛型的具体类型,那么该对象操作方法时,这些方法只能操作一种数据类型。

5、所以既可以在类上的泛型声明,也可以在同时在该类的方法中声明泛型。

泛型方法示例

image

泛型类

class Box<T> {

    /**
     * 对象方法可以直接使用类泛型参数
     * @param age
     * @return
     */
    public T getAge(T age){
        return  age;
    }


    /**
     * 类方法需要使用<T>定义泛型参数
     * @param name
     * @param <T>
     * @return
     */
    public static  <T> T getNameTest(T name){
        return name;
    }
}

泛型与泛型类类似。

public interface Inte<T> {
    
    void show(T t);
}
public class InteIml<T> implements Inte<T> {
    @Override
    public void show(T t) {

    }
}

最近的文章

jekyll Github Pages 博客搭建 并实现评论 阅读量 以及分类功能

搭建一个属于自己的博客系统,不仅可以将平时记录的知识进行归档和存储,同时也可以进行分享,让自己积累的成果得到别人的认同。相比使用一些博客平台,没有规则的限制,烦恼于编辑器不够好用,以及担心哪天博客gg了,数据会丢失,自建的博客系统可以随心所欲地满足自己的需求,哪时不爽调整哪里,如果你是个文艺小青年,创建一个独一无二的博客系统,不是逼格满满的,想想都让人兴奋吧当然,你会说,自建一个博客平台,需要太多技术的支持,例如数据库,前端页面,后台逻辑等,买域名,建服务器,岂不是得不偿失。当博客技术发展...…

网站搭建|个人博客继续阅读
更早的文章

android实用工具高效

一 、Android Debug DatabaseAndroid Debug Database是一个非常酷的开源工具,完全改变了debug 数据库和shared preferences的方式。现在你可以在一个漂亮的界面上查看,编辑,删除数据,以及运行sql语句。二、Android WiFi ADB有了这个开源的工具,你就可以通过Wi-Fi从Android Studio运行app了。你无需用数据线把设备和电脑连接,享受无线调试带来的乐趣。三、ScalpelJake Wharton开发的一个非...…

android实用工具|高效继续阅读