简单来说一下java中的泛型,ssh中dao层使用会简化代码量
来源:互联网 发布:淘宝助理快递模板设置 编辑:程序博客网 时间:2024/06/05 02:24
原来只是听老师说泛型特别好用,但是后来一直弄android用的泛型就比较少了,可是感觉它真的很重要,于是花了一下午的时间写了个demo,好,老规矩,上代码:
首先,sysout是个工具,但是用着不顺手,博主按照自己的习惯写了一个工具类,
s:
package cn.edu.sjzc.fanyafeng.testlamejni.util;/** * System统一管理类 * * @author 樊亚风 */public class S { private S() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } public static boolean isSystem = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化 private static final String TAG = "---| sysout输出:"; public static void l() { if (isSystem) { System.out.println("--------------------------------------"); } } // 下面两个是默认sys的函数 public static void p(Object msg) { if (isSystem) { System.out.print(TAG + msg + " |---"); } } public static void p(String msg) { if (isSystem) { System.out.print(TAG + msg + " |---"); } } public static void p(int msg) { if (isSystem) { System.out.print(TAG + msg + " |---"); } } public static void pl(Object msg) { if (isSystem) { System.out.println(TAG + msg + " |---"); } } public static void pl(String msg) { if (isSystem) { System.out.println(TAG + msg + " |---"); } } public static void pl(int msg) { if (isSystem) { System.out.println(TAG + msg + " |---"); } } // 下面是传入自定义tag的函数 public static void p(Object tag, Object msg) { if (isSystem) { System.out.print("---| " + tag + ":" + msg + " |---"); } } public static void p(String tag, String msg) { if (isSystem) { System.out.print("---| " + tag + ":" + msg + " |---"); } } public static void p(String tag, int msg) { if (isSystem) { System.out.print("---| " + tag + ":" + msg + " |---"); } } public static void pl(Object tag, Object msg) { if (isSystem) { System.out.println("---| " + tag + ":" + msg + " |---"); } } public static void pl(String tag, String msg) { if (isSystem) { System.out.println("---| " + tag + ":" + msg + " |---"); } } public static void pl(String tag, int msg) { if (isSystem) { System.out.println("---| " + tag + ":" + msg + " |---"); } }}这个没有什么技术含量,相信大家搂一眼就知道什么意思了,好,来看博定义的两个接口:
一个参数的:
package cn.edu.sjzc.fanyafeng.testlamejni.test;/** * Created by Administrator on 2015/6/9/0009. */public interface GenericsInterfaceOneParams<T> { void show(T t);}两个参数的:
package cn.edu.sjzc.fanyafeng.testlamejni.test;/** * Created by Administrator on 2015/6/9/0009. */public interface GenericsInterfaceTwoParams<T, U> { void show(T t, U u);}
来看一个参数的实现:
第一个是int类型的
package cn.edu.sjzc.fanyafeng.testlamejni.test;import cn.edu.sjzc.fanyafeng.testlamejni.util.S;/** * Created by Administrator on 2015/6/9/0009. */public class OneIntParams implements GenericsInterfaceOneParams<Integer> { @Override public void show(Integer integer) { S.pl(integer); }}第二个是list类型的
package cn.edu.sjzc.fanyafeng.testlamejni.test;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import cn.edu.sjzc.fanyafeng.testlamejni.util.S;/** * Created by Administrator on 2015/6/9/0009. */public class OneListParams implements GenericsInterfaceOneParams<List> { @Override public void show(List arrayList) { for (Object item : arrayList) { S.pl(item); } S.l(); Iterator iterator = arrayList.iterator(); while (iterator.hasNext()) { S.pl(iterator.next()); } }}这里用了一个迭代器和一个增强的for循环
第三个是string类型的
package cn.edu.sjzc.fanyafeng.testlamejni.test;import cn.edu.sjzc.fanyafeng.testlamejni.util.S;/** * Created by Administrator on 2015/6/9/0009. */public class OneStringParams implements GenericsInterfaceOneParams<String> { @Override public void show(String s) { S.pl(s); }}再来看两个参数的String实现
package cn.edu.sjzc.fanyafeng.testlamejni.test;import cn.edu.sjzc.fanyafeng.testlamejni.util.S;/** * Created by Administrator on 2015/6/9/0009. */public class TwoStringParams implements GenericsInterfaceTwoParams<String, String> { @Override public void show(String s, String t) { S.pl(s, t); }}
再来看任意类型的,这里就列举了一个例子
package cn.edu.sjzc.fanyafeng.testlamejni.test;import cn.edu.sjzc.fanyafeng.testlamejni.util.S;/** * Created by Administrator on 2015/6/9/0009. */public class TwoParams implements GenericsInterfaceTwoParams<String, Integer> { @Override public void show(String s, Integer integer) { S.pl(s, integer); }}
还有一个是测试类型的
package cn.edu.sjzc.fanyafeng.testlamejni.test;import cn.edu.sjzc.fanyafeng.testlamejni.util.S;/** * Created by fanyafeng on 2015/6/9/0009. */public class Generics<T> { private T t; public Generics(T t) { this.t = t; } public T getT() { return t; } public void setT(T t) { this.t = t; } public void showType() { S.pl("T的实际类型是:", t.getClass().getName()); }}最后就是测试的主入口
package cn.edu.sjzc.fanyafeng.testlamejni.test;import java.util.ArrayList;import java.util.List;import cn.edu.sjzc.fanyafeng.testlamejni.util.S;/** * Created by Administrator on 2015/6/9/0009. */public class GenericsTest { public static void main(String[] args) { S.pl("测试泛型"); S.l(); init(); } private static void init() { initInteger(); initString(); initOneStringParams(); initOneIntParams(); initTwoStringParams(); initTwoParams(); initObject(); initArray(); isBlank("性别", "男", "csdn","http://blog.csdn.net/qq_23195583"); } private static void initInteger() { Generics<Integer> integerGenerics = new Generics<Integer>(518); integerGenerics.showType(); int i = integerGenerics.getT(); S.pl("value=", i); S.l(); } private static void initString() { Generics<String> stringGenerics = new Generics<String>("fanyafeng"); stringGenerics.showType(); String s = stringGenerics.getT(); S.pl("value=", s); S.l(); } private static void initOneStringParams() { OneStringParams oneStringParams = new OneStringParams(); oneStringParams.show("fanyafeng"); S.l(); } private static void initOneIntParams() { OneIntParams oneIntParams = new OneIntParams(); oneIntParams.show(24); S.l(); } private static void initTwoStringParams() { TwoStringParams twoStringParams = new TwoStringParams(); twoStringParams.show("姓名", "樊亚风"); S.l(); } private static void initTwoParams() { TwoParams twoParams = new TwoParams(); twoParams.show("年龄", 24); S.l(); } private static void initObject() { //博主这个貌似没有用泛型,有点蒙圈 FanyafengBean fanyafengBean = new FanyafengBean("樊亚风"); fanyafengBean.show("姓名"); FanyafengBean fanyafengBean1 = new FanyafengBean(24); fanyafengBean1.show("年龄"); S.l(); } private static void initArray() { OneListParams oneListParams = new OneListParams(); List list = new ArrayList(); list.add("姓名"); list.add("樊亚风"); list.add("年龄"); list.add(24); oneListParams.show(list); S.l(); } public static void isBlank(String... str) { if (str == null || str.length == 0) { return; } else { for (String s : str) { S.pl(s); } } S.l(); return; }}// public static boolean isBlank(String... str) {// if (str == null || str.length == 0) {// return true;// } else {// for (String s : str) {// if (GenericsTest.isBlank(s)) {// S.pl(s);// return true;// }// }// return false;// }// }//}
本来想写一个任意参数个数的接口,但是博主能力不够,只写了一个具体的实现方法,博主再自己钻研钻研,最后来一张效果图
0 0
- 简单来说一下java中的泛型,ssh中dao层使用会简化代码量
- 【SSH 框架项目的搭建--简化版】使用注解代替xml中的<bean>,减少代码量
- hibernate 泛型简化Dao层
- 解决SSh中公共Dao使用泛型且Dao层无其他Dao,Service直接继承公共Dao,部署到tomcat可能会出现的错误。
- 在项目的实际开发中,dao层java泛型的的应用(ssh)
- SSH中DAO层抽取
- SSH中公共Dao层、Dao接口
- Android 使用ORMLite打造万能泛型Dao简化数据持久化层
- JAVA SSH开发架构中Action层,Service层,modle层,Dao层的功能区分
- 如果在Action层和DAO层之间不使用Biz层,Action层的代码量将变大
- 使用SSH中, service层直接调用service层还是dao层,哪个更合理?
- JDBC之使用继承简化代码量
- ormlite使用中的dao简化写法
- java中dao层获取MySQL数据库中的时间
- 使用spring data jpa简化dao层编写
- 封装dao层中的简单问题
- qt 代码中简化槽的代码量
- 使用反射简化ajax中的处理代码(Java版)
- [JQ权威指南]第二天:JQ控制DOM对象
- 第14周 【项目1 - 小玩文件】(3)
- Swift语法之?和!区别
- ArcSDE for SQL Server 2008 安装问题汇总
- Java单元测试(Junit+Mock+代码覆盖率)
- 简单来说一下java中的泛型,ssh中dao层使用会简化代码量
- java 复制对象
- 第十四周阅读程序1
- 为了那不曾遗忘的梦想
- 第十四周上机项目1.1小玩文件
- Git使用
- 第14周项目1 - 小玩文件(1)
- 第十四周阅读程序——例二
- 第十四周 阅读程序 2