Java泛型总结
来源:互联网 发布:东快傻 知乎 编辑:程序博客网 时间:2024/06/07 23:58
在用Java写颠倒数组的时候,突然想到了C++的template,发现Java是以泛型来处理这个问题的,因此决定总结一下
1.泛型定义规则(与C++类比):
- 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),在返回类型之前(即下面例子中的<T>)同C++中的template <typename T>
- 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。同C++中定义泛型算法,<typename IteratorType,typename elemType>
- 注意泛型的类型参数只能代表引用型类型(类似C++的指针),不能是原始类型(如int,double,char的等)这一点和C++的template不同!
- java的数据类型如下图:
- “==”作用在引用数据类型间,判断内存地址是否相等,想判断内容实体用equals;
- 基本传值传参传的是副本,修改后原值不变;引用传值传参穿的是地址,修改后原值改变。
- 如果要对原始类型编写泛型函数,就要用Integer或Doulbe等Number类,Characte类,即int a[]改成Integer a[]
- 貌似只有一种情况可以对原始类型定义泛型:单个变量时
public class JavaTemplate { public static<T> void ReverseArray (T[] TgData){ int nLen = TgData.length; for(int i=0;i<nLen/2;++i){ T nTemp = TgData[i]; TgData[i] = TgData[nLen-1-i]; TgData[nLen-1-i] = nTemp; } } public static<T> void PrintArray(T[] TgData){ for(int i=0;i<TgData.length;++i) System.out.printf("%s ",TgData[i]); System.out.print('\n'); } public static <T> void PrintT(T output){ System.out.print(output); System.out.print('\n'); } public static void main(String []args){ Integer ArrayInt[] = {1,2,3,4,5,6}; PrintArray(ArrayInt); ReverseArray(ArrayInt); PrintArray(ArrayInt); Double ArrayDouble[] = {1.0,2.0,3.0,4.0,5.0}; PrintArray(ArrayDouble); ReverseArray(ArrayDouble); PrintArray(ArrayDouble); Character ArrayChar[]={'1'}; PrintArray(ArrayChar); ReverseArray(ArrayChar); PrintArray(ArrayChar); double d = 8.8; PrintT(d); int n = 8; PrintT(n); }}
2.通过继承让泛型中的类型参数有界:
以泛型找出最大值为例,对于操作数值的方法肯定只希望接受Number类的实例,可以用extends或implements
public class MaxOf3Number { public static<T extends Comparable<T>> T Maximum (T x,T y,T z){ T max = x; if(max.compareTo(y) <= 0) max = y; if (max.compareTo(z) <= 0 ) max = z; return max; } public static void main(String []args){ int x=1,y=2,z=3; System.out.printf("%d,%d,%d的最大值为:%d\n",x,y,z,Maximum(x,y,z)); Double a=2.0,b=5.0,c=3.0; System.out.printf("%1f,%1f,%1f的最大值为:%1f\n",a,b,c,Maximum(a,b,c)); char d='d',e='e',f='f'; System.out.printf("%s,%s,%s的最大值为:%s\n",d,e,f,Maximum(d,e,f)); }}还有泛型类的概念,不过因为暂时用不到,所以Java泛型就点到这里为止,以后有需要再续……
0 0
- Java泛型总结
- Java泛型总结
- JAVA泛型总结
- Java泛型总结
- java 泛型总结
- java泛型总结
- JAVA泛型总结
- JAVA泛型总结
- Java-泛型总结
- java泛型总结
- java 泛型总结
- java泛型总结
- Java泛型总结
- Java泛型总结
- Java泛型总结
- java泛型总结
- Java泛型总结
- Java泛型总结
- 3.30-4.3 总结与想法
- 针对最近笔试的一些排序算法总结(未完待续)
- 无法新建scala文件
- C++11并发API总结
- 一道有趣的数学题
- Java泛型总结
- 设计模式1#单例
- TTT
- 理解数学空间,从距离到希尔伯特空间
- tecent 实习
- HDU-4961 Boring Sum (模拟)
- 一个服务端,电脑网页端登录和安卓端登录遇到的一些问题
- Java Lock-同步的另一种实现
- UVA 10537(最短路)