Java-泛型
来源:互联网 发布:英文论文格式 知乎 编辑:程序博客网 时间:2024/05/29 14:08
使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码更具有更好的安全性和可读性。
ArrayList list = new ArrayList(); list.add("string"); list.add(1);
不使用泛型的情况下ArryList 接受的参数都会转化为object类型,这样在取出存取元素的时候就需要进行转换,没有限定传入的元素类型,取出元素时转换会出现异常。
使用泛型的话,可以限定传入的元素类型,在编译期就可以检测到错误,在取出的时候就不需要在进行类型转换。这样做是安全的。
ArrayList<String> list = new ArrayList<String>(); list.add("string"); list.add(1); //第二个add 编译器会报 The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int)
自定义泛型类:
//用T作为类型变量 这样就可以接受多种类型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 void setFirst(T first) { this.first = first; } public T getSecond() { return second; } public void setSecond(T second) { this.second = second; }}
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()); System.out.println(ArrayAlg.<String>getMiddle("s","a","f")); int[] numbers = {1,5,6,8,9}; System.out.println(ArrayAlg.min(words)); }}public class PairTest1 { public static void main(String[] args) { String[] words = { "Mary", "had", "a", "little", "lamb" }; //这样可以同时处理string类型和integer类型的数据了 System.out.println(ArrayAlg.<String> getMiddle("s", "a", "f")); System.out.println(ArrayAlg.<Integer> getMiddle(1, 2, 3)); System.out.println(ArrayAlg.min(words)); }}class ArrayAlg { public static <T> T getMiddle(T... a) { return a[a.length / 2]; } //extends 用来限定类型 只有实现了Comparable接口的类型才能通过 可以有多个 &连接 public static <T extends Comparable> T min(T[] a) { if (null == a || a.length == 0) { return null; } T smallest = a[0]; for (int i = 1; i < a.length; i++) { if (smallest.compareTo(a[i]) > 0) { smallest = a[i]; } } return smallest; }}
0 0
- 【java 2】java泛型
- Java 泛型 Java generic
- Java Tutorials_Generics(java泛型)
- Java基础 Java 泛型
- java 泛型
- java泛型
- Java泛型
- Java泛型
- java泛型
- java泛型
- java泛型
- Java 泛型
- Java泛型
- Java 泛型
- JAVA 泛型
- java 泛型
- java泛型
- Java泛型
- 关于BuildNumberIncreaser.dll注册的问题
- python 赋值、浅拷贝与深拷贝
- JavaScript 继承代码中,B.prototype = new A(); 的含义是什么?[转自知乎] 需要多回味
- 时间格式、比较等(1)
- Linux环境下mysql数据库定时备份
- Java-泛型
- 点击按钮后台生成桌面快捷方式
- 友盟分享本地图片到微信无法调起微信解决方案
- MFC文件的写入以及写出????
- 顺序表右移K位
- 面试总结
- 我的第一篇文章
- 【design pattern】行为型模式之—模板方法设计模式(Template method)
- Hibernate原理解析(一)