博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单来说一下java中的泛型,ssh中dao层使用会简化代码量
阅读量:5995 次
发布时间:2019-06-20

本文共 8130 字,大约阅读时间需要 27 分钟。

原来仅仅是听老师说泛型特别好用,但是后来一直弄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
{ void show(T t);}
两个參数的:

package cn.edu.sjzc.fanyafeng.testlamejni.test;/** * Created by Administrator on 2015/6/9/0009. */public interface GenericsInterfaceTwoParams
{ 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
{ @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
{ @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
{ @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
{ @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
{ @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
{ 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
integerGenerics = new Generics
(518); integerGenerics.showType(); int i = integerGenerics.getT(); S.pl("value=", i); S.l(); } private static void initString() { Generics
stringGenerics = new Generics
("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;// }// }//}
本来想写一个随意參数个数的接口,可是博主能力不够。仅仅写了一个详细的实现方法,博主再自己钻研钻研。最后来一张效果图

你可能感兴趣的文章
python3-赋值与深浅拷贝(转载速查)
查看>>
ORM 进阶操作
查看>>
java的基本变量分类
查看>>
m_Orchestrate learning system---三十、项目中的dist文件一般是做什么的
查看>>
mysqli数据库操作简单实例
查看>>
P1133 教主的花园
查看>>
windows下以及Linux环境下安装activeMQ
查看>>
JS子节点删除操作小记
查看>>
Linux 下找出超過某些容量的檔案
查看>>
Nginx反向代理和负载均衡的配置
查看>>
编译原理--LR(1)分析表构建--JavaScript版
查看>>
整合ucenter经典教程
查看>>
mogodb(1) 简介
查看>>
使用wireshark抓取TCP包分析1
查看>>
LeetCode-15-3Sum
查看>>
Navicat for Mysql 10.x 注册码收藏
查看>>
CoverflowJS
查看>>
Java新手入门的30个基本概念
查看>>
Codeforces Round #395 C. Timofey and a tree
查看>>
Oracle连接字符串大全
查看>>