`
poyunri
  • 浏览: 29519 次
文章分类
社区版块
存档分类
最新评论

12.2简单泛型类的定义

 
阅读更多

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

一般的类和方法,只能使用具体的类型(基本类型或者自定义类型)。如果要编译应用于多种类型的代码就要引入泛型了。

例12-1使用Pair类。静态方法minmax遍历数组同时计算出最小值和最大值。用一个Pair返回两个结果

package core.pair_12_1;


public class PairTest1 {

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

class ArrayAlg {

    public static Pair<String> minmax(String[] a) {
        // TODO Auto-generated method stub
        if (a == null || a.length == 0)
            return null;
        
        String min = a[0];
        String max = a[0];
        
        for (int i = 1; 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<String>(min, max);
    }
    
}

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;
    }
}


12.3泛型方法

泛型方法可以定义在泛型类中也可以定义在普通类中:

public static <T> getMiddle(T[] a) {

return a[a.length / 2];

}

注意,类型变量<T>放在修饰符(这里是public static)后面,返回类型的前面。

分享到:
评论

相关推荐

    AspNet MVC 开发技术

    12.3.1 定义泛型类 308 12.3.2 定义泛型接口 319 12.3.3 定义泛型方法 319 12.3.4 定义泛型委托 321 12.4 变体 321 12.4.1 协变 322 12.4.2 抗变 323 12.5 小结 324 12.6 练习 324 12.7 本章要点 325 第13章 其他oop...

    C++ Primer第四版【中文高清扫描版】.pdf

    12.1.4 类声明与类定义 374 12.1.5 类对象 375 12.2 隐含的this指针 376 12.3 类作用域 380 类作用域中的名字查找 382 12.4 构造函数 385 12.4.1 构造函数初始化式 387 12.4.2 默认实参与构造函数 391 12.4.3 默认...

    深入理解观察者模式-Java设计模式及应用案例(第2版)-[共5页].pdf

    } } (5)一个简单的测试类 Test public class Test { public static void main(String[] args) { IObserver obs = new Observer(); //定义观察者对象 Subject subject = new Subject(); //定义主题对象 subject....

    C#实训教程

    11.6 定义泛型类 237 11.7 default关键字 239 11.8 约束类型 240 11.9 从泛型类中继承 247 11.10 泛型运算符 248 11.11 泛型结构 250 11.12 定义泛型接口 250 11.13 定义泛型方法 251 11.14 定义泛型委托 ...

    Java2核心技术.part5

    13.2简单泛型类的定义 13.3泛型方法 13.4类型变量的限定 13.5泛型代码和虚拟机 13.5.1翻译泛型表达式 13.5.2翻译泛型方法 13.5.3调用遗留代码 13.6约束与局限性 13.6.1基本类型 13.6.2运行...

    Java2核心技术.part3

    13.2简单泛型类的定义 13.3泛型方法 13.4类型变量的限定 13.5泛型代码和虚拟机 13.5.1翻译泛型表达式 13.5.2翻译泛型方法 13.5.3调用遗留代码 13.6约束与局限性 13.6.1基本类型 13.6.2运行...

    疯狂JAVA讲义

    8.2.1 定义泛型接口、类 295 8.2.2 从泛型类派生子类 296 8.2.3 并不存在泛型类 298 8.3 类型通配符 298 8.3.1 使用类型通配符 300 8.3.2 设定类型通配符的上限 300 8.3.3 设定类型形参的上限 302 8.4 泛型...

    Java2核心技术.part1

    13.2简单泛型类的定义 13.3泛型方法 13.4类型变量的限定 13.5泛型代码和虚拟机 13.5.1翻译泛型表达式 13.5.2翻译泛型方法 13.5.3调用遗留代码 13.6约束与局限性 13.6.1基本类型 13.6.2运行时类型查询...

    Java2核心技术.part6

    13.2简单泛型类的定义 13.3泛型方法 13.4类型变量的限定 13.5泛型代码和虚拟机 13.5.1翻译泛型表达式 13.5.2翻译泛型方法 13.5.3调用遗留代码 13.6约束与局限性 13.6.1基本类型 13.6.2运行...

    Java2核心技术.part4

    13.2简单泛型类的定义 13.3泛型方法 13.4类型变量的限定 13.5泛型代码和虚拟机 13.5.1翻译泛型表达式 13.5.2翻译泛型方法 13.5.3调用遗留代码 13.6约束与局限性 13.6.1基本类型 13.6.2运行...

    Java2核心技术.part2

    13.2简单泛型类的定义 13.3泛型方法 13.4类型变量的限定 13.5泛型代码和虚拟机 13.5.1翻译泛型表达式 13.5.2翻译泛型方法 13.5.3调用遗留代码 13.6约束与局限性 13.6.1基本类型 13.6.2运行...

    Java开发技术大全 电子版

    10.2一个关于泛型的简单例子305 10.3带两个类型参数的泛型类308 10.4有界类型309 10.5通配符参数311 10.6泛型方法313 10.7泛型接口315 10.8泛型类的继承317 10.8.1以泛型类为父类317 10.8.2以非泛型类为父类...

    数据结构与算法分析Java语言描述(第二版)

    Java51.4.1 使用Object表示泛型1.4.2 基本类型的包装1.4.3 使用接口类型表示泛型1.4.4 数组类型的兼容性1.5 利用Java5泛性实现泛型特性成分1.5.1 简单的泛型类和接口1.5.2 自动装箱/拆箱1.5.3 带有限制的通配符...

    数据结构与算法分析-Java语言描述(第2版)_2_2

    java5 1.4.1 使用object表示泛型 1.4.2 基本类型的包装 1.4.3 使用接口类型表示泛型 1.4.4 数组类型的兼容性 1.5 利用java5泛性实现泛型特性成分 1.5.1 简单的泛型类和接口 1.5.2 自动装箱/拆箱....

    数据结构与算法分析-Java语言描述(第2版)_1_2

    java5 1.4.1 使用object表示泛型 1.4.2 基本类型的包装 1.4.3 使用接口类型表示泛型 1.4.4 数组类型的兼容性 1.5 利用java5泛性实现泛型特性成分 1.5.1 简单的泛型类和接口 1.5.2 自动装箱/拆箱....

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    11.2.2 简单泛型类的定义 309 11.2.3 泛型的优点 310 11.2.4 类型参数命名规范 310 11.2.5 泛型接口和结构 311 11.2.6 构造器和终结器的定义 313 11.2.7 默认值的指定 313 11.2.8 多个...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    18.2.1 对比泛型类与泛化类 325 18.2.2 泛型和约束 325 18.3 创建泛型类 325 18.3.1 二叉树理论 325 18.3.2 使用泛型构造二叉树类 328 18.4 创建泛型方法 337 18.5 可变性和泛型接口 340 18.5.1 协变接口 341...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     7.1.3 定义类相关的非成员函数 234  7.1.4 构造函数 235  7.1.5 拷贝、赋值和析构 239  7.2 访问控制与封装 240  7.2.1 友元 241  7.3 类的其他特性 243  7.3.1 类成员再探 243  7.3.2 返回*this的成员函数...

Global site tag (gtag.js) - Google Analytics