简单来说一下java中的泛型,ssh中dao层使用会简化代码量
生活随笔
收集整理的這篇文章主要介紹了
简单来说一下java中的泛型,ssh中dao层使用会简化代码量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原來僅僅是聽老師說泛型特別好用,但是后來一直弄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> {@Overridepublic 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> {@Overridepublic 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> {@Overridepublic 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> {@Overridepublic 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> {@Overridepublic 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; // } // } //}
本來想寫一個隨意參數個數的接口,可是博主能力不夠。僅僅寫了一個詳細的實現方法,博主再自己鉆研鉆研。最后來一張效果圖
轉載于:https://www.cnblogs.com/yfceshi/p/6951965.html
總結
以上是生活随笔為你收集整理的简单来说一下java中的泛型,ssh中dao层使用会简化代码量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开源工具库
- 下一篇: MVC思想