资讯专栏INFORMATION COLUMN

Java™ 教程(泛型方法)

PingCAP / 3343人阅读

泛型方法

泛型方法是引入其自己的类型参数的方法,这类似于声明泛型类型,但类型参数的范围仅限于声明它的方法,允许使用静态和非静态泛型方法,以及泛型类构造函数。

泛型方法的语法包括类型参数列表,在尖括号内,它出现在方法的返回类型之前,对于静态泛型方法,类型参数部分必须出现在方法的返回类型之前。

Util类包含一个泛型方法compare,它比较两个Pair对象:

public class Util {
    public static  boolean compare(Pair p1, Pair p2) {
        return p1.getKey().equals(p2.getKey()) &&
               p1.getValue().equals(p2.getValue());
    }
}

public class Pair {

    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public void setKey(K key) { this.key = key; }
    public void setValue(V value) { this.value = value; }
    public K getKey()   { return key; }
    public V getValue() { return value; }
}

调用此方法的完整语法如下:

Pair p1 = new Pair<>(1, "apple");
Pair p2 = new Pair<>(2, "pear");
boolean same = Util.compare(p1, p2);

该类型已明确提供,通常,这可以省略,编译器将推断所需的类型:

Pair p1 = new Pair<>(1, "apple");
Pair p2 = new Pair<>(2, "pear");
boolean same = Util.compare(p1, p2);

此功能称为类型推断,允许你将泛型方法作为普通方法调用,而无需在尖括号之间指定类型,本主题将在下一节“类型推断”中进一步讨论。

上一篇:泛型原始类型 下一篇:有界类型参数

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72924.html

相关文章

  • Java教程(目录)

    Java™ 教程 Java教程是为JDK 8编写的,本页面中描述的示例和实践没有利用在后续版本中引入的改进。 Java教程是希望使用Java编程语言创建应用程序的程序员的实用指南,其中包括数百个完整的工作示例和数十个课程,相关课程组被组织成教程。 覆盖基础知识的路径 这些教程以书籍的形式提供,如Java教程,第六版,前往Amazon.com购买。 入门 介绍Java技术和安装Java开发软件并使用...

    lifesimple 评论0 收藏0
  • Java教程(类型推断)

    类型推断 类型推断是Java编译器查看每个方法调用和相应声明的能力,以确定使调用适用的类型参数,推理算法确定参数的类型,如果可用,还确定分配或返回结果的类型,最后,推理算法尝试查找适用于所有参数的最具体类型。 为了说明最后一点,在下面的示例中,推断确定传递给pick方法的第二个参数是Serializable类型: static T pick(T a1, T a2) { return a2; } ...

    JerryC 评论0 收藏0
  • Java教程泛型原始类型)

    泛型原始类型 原始类型是没有任何类型参数的泛型类或接口的名称,例如,给定Box泛型类: public class Box { public void set(T t) { /* ... */ } // ... } 要创建参数化类型的Box,请为形式类型参数T提供实际类型参数: Box intBox = new Box(); 如果省略实际的类型参数,则创建一个原始类型Box: Box...

    史占广 评论0 收藏0
  • Java教程泛型类型)

    泛型类型 泛型类型是通过类型参数化的泛型类或接口,修改以下Box类以演示此概念。 一个简单的Box类 首先检查一个对任何类型的对象进行操作的非泛型Box类,它只需要提供两个方法:set,它将一个对象添加到box中,get,它将检索它: public class Box { private Object object; public void set(Object object) ...

    Crazy_Coder 评论0 收藏0
  • Java教程(为什么要使用泛型?)

    泛型 在任何重要的软件项目中,bug都是不可避免的,仔细的规划、编程和测试可以帮助减少它们的普遍性,但是它们总会在某个地方以某种方式潜入你的代码,随着新功能的引入以及你的代码库在规模和复杂性方面的增长,这一点变得尤为明显。 幸运的是,一些错误比其他错误更容易被发现,例如,编译时错误可以在早期检测到,你可以使用编译器的错误消息来确定问题所在并立即修复它。但是,运行时错误可能会更成问题,它们并不总是立...

    MudOnTire 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<