美文网首页
定义简单泛型类和泛型方法

定义简单泛型类和泛型方法

作者: OrdinaryKnowing | 来源:发表于2018-12-17 11:07 被阅读0次
泛型类

一个泛型类就是具有一个或多个类型变量的类。

以Pair类作为例子。

public class Pair<T>
{
  private T first;
  private T second;

  public Pair(){first=null;second=null;}
  public Pair(T first, T second){ this.first = first; this.second = second;}

  public T getFirst(){ return first;}
  public T getSecond(){ return second; }

  public void setFirst(T newValue){ first = newValue; }
  public void setSecond(T newValue){ second = newValue; }
}

Pair类引入类型变量,用尖括号<>括起来,并放在类名的后面。泛型类可以有多个类型变量。例如,可以定义Pair类,其中第一个域和第二个域使用不同的类型:

public class Pair<T,U>{...}

类定义中的类型变量指定方法的返回类型以及域和局部变量的类型。例如

private T first;

使用具体的类型替换类型变量就可以实例化泛型类型。例如:
Pair<String>
可以将结果想象成带有构造器的普通类:

Pair<String>()
Pair<String>(String,String

和方法

String getFirst();
...

泛型类可以看作为普通类的工厂。

示例程序

package com.template;

public class Pair<T> {
    private T first,second;
    public Pair(){};
    public Pair(T a, T b){
        first=a;
        second=b;
    }
    public void setFirst(T first){this.first=first;}
    public void setSecond(T second){this.second=second;}
    public T getFirst(){return first;}
    public T getSecond(){return second;}
    public String toString(){
        return first+","+second;
    }
    public static void main(String args[]){
        String[] sArray={"hello","how","amazing","zero"};
        System.out.println(Test.minmax(sArray));
    }
}
class Test{
    public static Pair<String> minmax(String[] a){
        if(a==null||a.length==0)return null;
        String min = a[0];
        String max = a[1];
        for(int i=0;i<a.length;i++){
            if(min.compareTo(a[i])>0)min=a[i];
            if(max.compareTo(a[i])<0)max=a[i];
        }
        return new Pair<>(min,max);
    }
}
泛型方法
class ArrayAlg{
  public static <T> getMiddle(T... a)
{
  return a[a.length/2];
}
}

调用泛型方法

String middle = ArrayAlg.<String>getMiddle("John", "Q", "Public");

也可以省略<String>,让编译器由后面的参数推断出类型。

String middle = ArrayAlg.getMiddle("John", "Q", "Public");

相关文章

  • 泛型

    一、泛型类、泛型接口和泛型方法1、泛型接口的定义: 2、两种泛型类的定义:(1) (2) 3、泛型方法的定义,可以...

  • 重走安卓进阶路——泛型

    ps.原来的标题 为什么我们需要泛型? 泛型类、泛型接口和泛型方法(泛型类和泛型接口的定义与泛型方法辨析); 如何...

  • Web笔记-基础加强

    泛型高级应用 自定义泛型方法 自定义泛型类 泛型通配符? 泛型的上下限 泛型的定义者和泛型的使用者 泛型的定义者:...

  • 【泛型】通配符与嵌套

    上一篇 【泛型】泛型的作用与定义 1 泛型分类 泛型可以分成泛型类、泛型方法和泛型接口 1.1 泛型类 一个泛型类...

  • Java 19-5.1泛型

    泛型类定义泛型类可以规定传入对象 泛型类 和泛型方法 泛型接口 如果实现类也无法确定泛型 可以在继承类中确定泛型:

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • 探秘 Java 中的泛型(Generic)

    本文包括:JDK5之前集合对象使用问题泛型的出现泛型应用泛型典型应用自定义泛型——泛型方法自定义泛型——泛型类泛型...

  • JAVA范型<? extends __> <

    目录 一. 泛型概念的提出(为什么需要泛型)? 二.什么是泛型? 三.自定义泛型接口、泛型类和泛型方法 四.类型通...

  • JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义

    本篇主要讲解java泛型的理解、集合中简单使用泛型、自定义泛型结构(包括类、接口、方法)。 一、什么是泛型? 通俗...

  • 《Oracle Java SE编程指南》20-03:泛型类

    内容导航: 前言 1、泛型类 2、定义简单泛型类 3、代码示例 1、泛型类 泛型类指的是在定义一个类的时候,在类名...

网友评论

      本文标题:定义简单泛型类和泛型方法

      本文链接:https://www.haomeiwen.com/subject/zbrqkqtx.html