java泛型方法的重载是什么意思?Java泛型的作用是什么?

Java 泛型的本质是参数化类型,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。那java泛型方法的重载是什么意思?下面来我们就来给大家讲解一下。

Java的方法重载一般指在同一个类中的两个同名方法,规则很简单:两个方法必须具有不同的方法签名;换句话说:就是这两个方法的参数必须不相同,使得编译器能够区分开这两个重载的方法;由于编译器不能仅仅通过方法的返回值类型来区分重载方法,所以如果两个方法只有返回类型不同,其它完全一样,编译是不能通过的。在泛型方法的重载时,这个规则稍微有一点变化,看如下代码:

class Overloaded
{
    public static int sum(Listints)
    {
        return 0;
    }
    public static String sum(Liststrings)
    {
        return null;
    }
}

上面是两个泛型方法的重载例子,由于Java的泛型采用擦除法实现,List和List在运行时是完全一样的,都是List类型。也就是,擦除后的方法签名如下:

int sum(List) String sum(List)

Java允许这两个方法进行重载,虽然它们的方法签名相同,只有返回值类型不同,这在两个普通方法的重载中是不允许的;当然了,如果两个泛型方法的参数在擦除后相同,而且返回值类型也完全一样,那编译肯定是不能通过的;类似地,一个类不能同时继承两个具有相同擦除类型的父类,也不能同时实现两个具有相同擦除的接口。如

Class A implements Comparable,Comparable。

总结一下:两个泛型方法在擦除泛型信息后,如果具有相同的参数类型,而返回值不一样,是可以进行重载的;Java有足够的信息来区分这两个重载的方法。

Java泛型的作用是什么?

Java 语言中,引入泛型实乃为一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。作用如下:

1、类型安全。

泛型的主要目标是提高 Java 程序的类型安全。编译时的强类型检查;通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

2、消除强制类型转换。

泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

3、潜在的性能收益。

泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。

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

4、更好的代码复用性,比如实现泛型算法

在框架设计时候,BaseDao、BaseService、BaseDaoImpl、BaseServiceImpl;通过继承,实现抽象了所有公共方法,避免了每次都要写相同的代码。

不过我们在使用java泛型的时候,还需要注意泛型的类型参数只能是类类型,不可以是简单类型哦!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。

推荐阅读:

java字符串如何转数字算法?Java输入数字如何输出倒序?

java产品架构原理是什么?Java应用架构原理

json语法规则是什么?json语法详解