发布网友 发布时间:2024-09-27 05:11
共1个回答
热心网友 时间:2024-10-25 12:17
hello大家好,我是冰冰。
Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略, 即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(Type Erasure), 将所有的泛型表示(尖括号中的内容)都替换为具体的类型(其对应的原生态类型),就像完全没有泛型一样。
所以Java泛型只在编译期间有效,运行期间泛型是没有意义的.
ListMap<K,V> ? ?E ?K ?V ?T ? ?A-Z 都是代表参数化数据类型
下面用代码展示用法
泛型类
public?class?MyFanXingClass<S?extends?Number,?T>?{????//属性和方法????private?Integer?id;????private?S?s;//实例变量??对象??Object????private?T?t;????private?Object?data;????public?void?a(T?t1)?{?//普通的功能方法??t1的类型?与?T?类型一致????}????//创建泛型方法??b????public?<K,S,T,M,N>?void?b(K?k,S?s1,T?t)?{????}????//K?S与创建对象的时候类型不一致???没有一点关系??在正常开发中?将泛型方法定义成static????public?static?<K,S>?void?b1(K?k,S?s1)?{????}????//参数化类型??上限??和?下限????//上限:?extends??MyFanXingClass<S?extends?Number,?T>??限定了S只能是Number类型或者Number类型所有的子类????//下限:?super????MyFanXingClass<S,???super??T>?my??????限定了?只能T类型?或者?T?类型父级类型????public??void?c(MyFanXingClass<S,???super??T>?my,?List<??super?LinkedHashMap>?list){????}泛型接口
//很多模块都有CURD??CREATE?UPDATE?READ??DELETEpublic?interface?BaseDao<T,?S>?{????//抽象出来很多模块通用的方法????void?add(T?t);????void?delete(S?id);????void?update(T?t);????List<T>?selectAll();????T?selectOne(S?id);}public?abstract?class?BaseDaoImpl<T,?S>?implements?BaseDao<T,?S>?{????@Override????public?void?add(T?t)?{????????System.out.println("add?....?success?"?+?t);????}//........}public?interface?UserDao?extends?BaseDao<User,Integer>?{//继承父接口??可以使用多态创建对象????//体现具体模块里面特有功能方法}public?class?UserDaoImpl?extends?BaseDaoImpl<User,Integer>?implements?UserDao?{}文章创作灵感来自:1024创新实验室罗文