泛型程序设计---泛型类的定义

泛型程序设计,程序设计都明白什么意思,那泛型呢?什么是泛型?

所谓泛型是指:额...好吧,说不清...举个例子吧:古代的宗教道教中有一句话,道生一,一生二,二生三,三生万物。这里的道即对应程序设计中的泛型,泛型很抽象,我也说不出所以然...(大家可以在文章下方留言讨论)

那么怎么定义泛型类呢?

语法如下:

  在看语法之前,需要先了解 类型变量的概念。所谓类型变量是指:可以代替任何类型的一个变量,在定义时,可以使用字符(一般大写,且一般用T及其附近的字符);实际,声明泛型类的变量时,需要使用具体的类名代替类型变量。

  class 类名<类型变量...>:类型变量可以有多个,每个类型变量之间用逗号","分开。

以下是 1个类型变量与多个类型变量的泛型类 程序示例:

/**
 * DateAndTime: 2016-12-14下午10:15:03
 */
package chapter12;

/**
 * 测试:1个类型变量 的 泛型类 的定义
 * @author Administrator
 *
 */
public class GenericTypeClass {

    public static void main(String[] args) {
        String[] words = {"Mary", "had", "a", "little", "lamb"};
        Pair<String> pair = ArrayArg.minmax(words);
        System.out.println("min: "+ pair.getFirst());
        System.out.println("max: "+ pair.getSecond());
    }

}

/**
 * A GenericType Class
 * @author Administrator
 *
 * @param <T>
 */
class Pair<T> {

    private T first;
    private T second;

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

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

    public T getFirst() {
        return first;
    }
    public void setFirst(T first) {
        this.first = first;
    }
    public T getSecond() {
        return second;
    }
    public void setSecond(T second) {
        this.second = second;
    }

}

class ArrayArg {

    public static Pair<String> minmax(String[] t) {
        if(null == t || t.length == 0) return null;
        String min = t[0];
        String max = t[0];
        for(String element : t) {
            if(element.compareTo(min) < 0) min = element;
            if(element.compareTo(max) > 0) max = element;
        }
        return new Pair<>(min, max);
    }

}

/**
 * DateAndTime: 2016-12-14下午10:36:44
 */
package chapter12;

/**
 * 多个类型变量 的 泛型类的定义
 * @author Administrator
 *
 */
public class GenericTypeClass2 {
    public static void main(String[] args) {
        PairMultiTypeParamters<String, Integer> pmtp = new PairMultiTypeParamters<>("hello",0);
        System.out.println("T: " + pmtp.getFirst());
        System.out.println("U: " + pmtp.getSecond());
    }
}

class PairMultiTypeParamters<T, U> {
    private T first;
    private U second;

    PairMultiTypeParamters() {
        this.first = null;
        this.second = null;
    }

    PairMultiTypeParamters(T first, U second) {
        this.first = first;
        this.second = second;
    }

    public T getFirst() {
        return this.first;
    }

    public void setFirst(T first) {
        this.first = first;
    }

    public U getSecond() {
        return this.second;
    }

    public void setSecond(U second) {
        this.second = second;
    }

}

时间: 2024-09-29 22:48:29

泛型程序设计---泛型类的定义的相关文章

泛型程序设计---泛型方法的定义

昨天,学习了泛型类的定义,今天趁热打铁,学习下泛型方法的定义: 定义泛型方法的语法格式如下: 方法修饰符 类型变量(类型变量需要使用一对尖括号<>括起来) 返回值 方法名(方法参数),例如:public <T> T getMiddle(T...a); 以下是程序示例: class ArrayAlg { public static <T> T getMiddle(T...a) { return a[a.length/2]; } } 今天复习下昨天的泛型类定义.加上泛型方法

基础知识(12)- 泛型程序设计

12.1 为什么要使用泛型程序设计 12.2 定义简单泛型类 12.3 泛型方法 12.4 类型变量的限定 12.5 泛型代码和虚拟机  12.5.1 翻译泛型表达式  12.5.2 翻译泛型方法  12.5.3 调用遗留代码 12.6 约束与局限性  12.6.1 不能用基本类型实例化类型参数  12.6.2 运行时类型查询只适用于原始类型  12.6.3 不能创建参数化类型的数组  12.6.4 Varargs警告  12.6.5 不能实例化类型变量  12.6.6 泛型类的静态上下文中类型

泛型程序设计

在JDK5.0之前: public class ArrayList{ public Object get(int i){...} public void add(Object o){...} ... private Object[] elementData; } 这样实现有两问题.首先,当取得一个值的时候必须进行强制类型转换. ArrayList files = new ArrayList(); ... String filename = (String)names.get(0); 此外,这里没

(十七)泛型程序设计

为什么使用泛型程序设计 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用. 定义简单的泛型类 一个泛型类就是具有 “一个或多个类型变量” 的类. 以下定义一个泛型类: 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.seco

12 泛型程序设计

为什么要使用泛型程序 泛型程序设计, 意味着编写的代码可以被很多不同类型的对象所重用. 例如, 我们并不希望为聚集String和File对象分别设计不同的类, 实际上,也不需要这样做, 因为一个ArrayList类可以聚集任何类型的对象, 这是一个泛型程序设计的实例. 没有泛型以前, ArrayList维护的时一个object类型的数组, 这样当获取一个值时, 必须使用强制类型转换. (并非类型判断, 而是强制的类型转换) 简单的泛型类定义 public class Pair<T> { pub

Java基础语法&lt;十二&gt; 泛型程序设计

1 意义 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用. 常见应用 : ArrayList 2 K T V E ? object等的含义 类型变量使用大写形式 E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类)(需要时还可以用临近的字母U和S)表示任意类型  S.U.V – 2nd.3rd.4th types K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型(无限制通配

浅谈泛型程序设计

一.为什么要使用泛型程序设计 1.泛型程序设计:以为这编写代码可以被很多不同类型的对象所重用.例如:我们不必为了聚集String和File而别设计不同的类: 2.使代码具有更好的可读性:ArrayList<String> str = new ArrayList<>(); 人们一看就知道是包含了String对象的数组列表: 二.定义简单的泛型类 泛型类:就是具有一个或多个类型变量的类. 声明语法:public class  ClassName<T> {...} 例: pu

Java核心技术(五) —— 泛型程序设计(2)

本文延续上文,针对泛型程序设计,从以下方面进行讲解: 为何使用泛型程序设计 定义简单的泛型类 泛型方法 类型变量的限定 泛型代码和虚拟机 约束与局限性 泛型类型的继承规则 通配符类型 反射和泛型 4.泛型代码和虚拟机 这里内容比较多且杂,我们先概括几个主要思想: 虚拟机中没有泛型,只有普通的类和方法 所有的类型参数都用他们的限定类型转换 桥方法被合成来保持多态 为保持类型安全性,必要时插入强制类型转换 (1)当定义一个泛型类型时,系统会自动提供一个相应的原始类型.原始类型的名字就是删去类型参数后

Java核心技术(五) —— 泛型程序设计(1)

本文主要针对泛型程序设计,从以下方面进行讲解: 为何使用泛型程序设计 定义简单的泛型类 泛型方法 类型变量的限定 泛型代码和虚拟机 约束与局限性 泛型类型的继承规则 通配符类型 反射和泛型 泛型程序设计,意味着编写的代码可以被很多不同类型的对象所重用. 1.泛型类 一个泛型类就是具有一个或多个类型变量的类,如定义一个Pair类 其中,Pair类引入了一个类型变量T,一般用比较短的大写形式来书写.实际上泛型类可以有多个类型变量,如上述程序中可以定义第一个域和第二个域具有不同的类型 之后,只要用具体