泛型程序设计,程序设计都明白什么意思,那泛型呢?什么是泛型?
所谓泛型是指:额...好吧,说不清...举个例子吧:古代的宗教道教中有一句话,道生一,一生二,二生三,三生万物。这里的道即对应程序设计中的泛型,泛型很抽象,我也说不出所以然...(大家可以在文章下方留言讨论)
那么怎么定义泛型类呢?
语法如下:
在看语法之前,需要先了解 类型变量的概念。所谓类型变量是指:可以代替任何类型的一个变量,在定义时,可以使用字符(一般大写,且一般用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