java基础巩固----泛型
来源:互联网 发布:js金沙娱乐注册送58 编辑:程序博客网 时间:2024/05/20 06:22
一.
泛型 的好处:
1. 把运行时出现 的问题提前至了编译时。2. 避免了无谓的强制类型转换。
泛型在集合中的应用:
ArrayList<String> list = new ArrayList<String>(); true true true
ArrayList<Object> list = new ArrayList<String>(); true true false
ArrayList<String> list = new ArrayList<Object>(); false true false
考虑到新老系统兼用性:
ArrayList list = new ArrayList<String>(); false false true
ArrayList<String> list = new ArrayList(); true false false
注意: 在泛型中没有多态的概念,两边的数据必须要一致。 或者是只写一边 的泛型类型。
推荐使用: 两边的数据类型都写上一致的。
public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();list.add("aaa");list.add("bbb");list.add("ccc");//list.add(123); //添加了非字符串类型的数据。//把集合中的所有元素转换成大写。for(int i = 0 ; i < list.size() ; i++){String str = list.get(i);System.out.println(str.toUpperCase());//System.out.println(list.get(i));}}
二.
自定义泛型: 自定义泛型可以理解为是一个数据类型的占位符,或者是理解为是一个数据类型的变量。
泛型方法:泛型方法的定义格式:
修饰符 <声明自定义泛型>返回值类型 函数名(形参列表..){
}
注意:
1. 在方法上的自定义泛型的具体数据类型是调用该方法的时候传入实参的时候确定的。
2. 自定义泛型使用的标识符只要符合标识符的命名规则即可。
需求: 定义一个函数可以接收任意类型的参数,要求函数的返回值类型与实参的数据类型要一致。
public static void main(String[] args) {Integer i= print(12); // IntegerString str = print("abc");//System.out.println(i);//System.out.println(str);}//<T> 把T字母声明为自定义 的泛型、public static <abc> abc print(abc o){return o;}三.
泛型类
泛型类的定义格式:
class 类名<声明自定义的泛型>{
}
注意的事项:
1. 在类上自定义的泛型的具体数据类型是在创建对象的时候指定的。
2. 在类上自定义了泛型,如果创建该类的对象时没有指定泛型的具体类型,那么默认是Object类型。
class Worker implements Comparator<Worker>{@Overridepublic int compare(Worker o1, Worker o2) {// TODO Auto-generated method stubreturn 0;}}//自定义 一个集合对象class MyList<T>{Object[] arr = new Object[10];int index = 0;public MyList(){}public void add(T o){arr[index++] = o;} }public class Demo3 {public static void main(String[] args) {MyList<String> list= new MyList<String>();list.add("123");MyList list2 = new MyList();new ArrayList<String>();}四.
泛型接口:
泛型接口的定义格式:
interface 接口名<声明自定义的泛型>{
}
在接口上自定义泛型要注意的事项:
1. 在接口上自定义泛型的具体数据类型是在实现该接口的时候指定的。
2. 如果一个接口自定义了泛型,在实现该接口的时候没有指定具体的数据类型,那么默认是Object数据类型。
如果想在创建接口实现类对象的时候再指定接口自定义泛型 的具体数据类型?
interface Dao<T>{public void add(T t);public void remove(T t);}public class Demo4<T> implements Dao<T>{public static void main(String[] args) {new Demo4<String>();}@Overridepublic void add(T t) {// TODO Auto-generated method stub}@Overridepublic void remove(T t) {// TODO Auto-generated method stub}}
1 0
- java基础巩固----泛型
- java基础巩固笔记(2)-泛型
- Java基础巩固
- java基础巩固
- java-基础巩固 1
- java-基础巩固 2
- java-基础巩固 3
- Java重点基础巩固
- Java基础巩固
- java基础巩固----集合
- JAVA基础篇巩固
- 点点滴滴巩固 java基础
- java实现单链表,巩固基础
- java基础巩固----Junit单元测试
- java基础巩固----路径问题
- Java基础巩固(一)
- java基础巩固之-线程
- java基础巩固(1)
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
- C++新旧代码的兼容
- 欢迎使用CSDN-markdown编辑器
- Android 清晰灵活简单易用的App应用更新库
- Java递归遍历查询音乐,文件夹
- java基础巩固----泛型
- NOIP2016提高组day1 换教室
- C/C++ 素数和逆素数的求解。。
- Java 1.8数组转换为List
- Express入门
- Java是如何调用相应重载方法的
- 使用Java的反射简单的实现ORM框架(五)
- java-I/O File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别
- php加密解密算法2