泛型基础
来源:互联网 发布:java算法题 编辑:程序博客网 时间:2024/05/01 04:06
public class Custom {}public class CustomDAO extends DAO<Custom> {}/** * 泛型的使用 * 1. 在集合中使用泛型 * 2. 自定义泛型类、泛型接口、泛型方法 * 3. 泛型与继承的关系 * 4. 通配符 */public class Generic { public static void main(String[] args) { test_1(); test_2(); testCustomGeneric(); test_dao(); } public static void test_dao() { CustomDAO dao = new CustomDAO(); dao.add(new Custom()); } /** * 测试泛型类 * 1. 实例化泛型类的对象时,指明泛型的类型。 * 指明以后,对应的类中所有使用泛型的位置,都变为实例化中指定的泛型的类型。 * 2. 如果我们自定了泛型类,但是在实例化时没有使用,那么默认类型是Object类的。 */ public static void testCustomGeneric() { GenericOrder<Integer> order = new GenericOrder<Integer>(); order.setT(89); order.add(97); System.out.println(order.getT()); System.out.println(order.getList().size()); int i = order.getE(45); String value = order.getE("123"); } /** * 1. 在集合中没有使用泛型的情况 */ public static void test_1() { java.util.List list = new ArrayList(); list.add(89); list.add(86); list.add(76); // 1. 没有使用泛型, 任何Object及其子类的对象都可见添加进来 list.add("AA"); for(int i = 0; i < list.size(); i++) { // 2. 强转为 int 类型时, 可能报 ClassCastExeption 异常 int score = (Integer) list.get(i); System.out.println(score); } } /** * * 2. 在集合中使用泛型的情况 */ public static void test_2(){ List<Integer> list = new ArrayList<Integer>(); list.add(78); list.add(89);// list.add("AA"); // 会直接报错 for(int i = 0; i < list.size(); i++) { int score = list.get(i); System.out.println(score); } Iterator<Integer> iterator = list.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } }}/** * 自定义泛型类 */public class GenericOrder<T> { private String orderName; private int orderId; private T t; private List<T> list = new ArrayList<T>(); /** 声明泛型方法 */ public <E> E getE(E e) { return e; } public void add(T e){ list.add(e); } public List<T> getList() { return list; } public T getT() { return t; } public void setT(T t) { this.t = t; } public String getOrderName() { return orderName; } public void setOrderName(String orderName) { this.orderName = orderName; } public int getOrderId() { return orderId; } public void setOrderId(int orderId) { this.orderId = orderId; }}/** * 继承泛型类或者泛型接口时,可以指明泛型的类型 * */class SubOrder extends GenericOrder<Integer> {}class SubOrder2<T> extends GenericOrder<T> {}/*** 泛型基类*/public class DAO<T> { public void add(T t) { // ... } public T get(int index) { return null; } public List<T> getForList(int index) { return null; } public void delete(int index) { }}public class CustomDAO extends DAO<Custom> {}public class Custom {}
0 0
- Java基础 泛型基础
- 泛型编程基础
- .NET泛型基础
- .NET泛型基础
- .NET泛型基础
- .NET泛型基础
- C++ 泛型基础
- C#泛型基础
- C++ 泛型基础
- 泛型基础
- 泛型基础
- C++ 泛型基础
- 泛型基础概念
- java泛型基础
- java泛型基础
- C++ 泛型基础
- Java泛型基础
- C++ 泛型基础
- mysql查询和缓存原理
- Android开发高级进阶02
- 城市省份学校区域数据字典
- [深入剖析React Native]React Native Flexbox属性讲解
- IP地址相关的基础知识以及IP相关术语的解释
- 泛型基础
- linux U盘启动盘安装ubuntu
- Quick Start With PyCharm(翻译)
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- 大数据配置集群ssh免密码登录
- This file is set to build for a version older than the project deployment target. Functionality may
- C++语言中函数参数传递的三种方式
- 基于Davenport风速谱两点时程模拟
- linux命令-date显示或设置时间