zoukankan      html  css  js  c++  java
  • 简单来说一下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> {
        @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;
    //        }
    //    }
    //}
    

    本来想写一个随意參数个数的接口,可是博主能力不够。仅仅写了一个详细的实现方法,博主再自己钻研钻研。最后来一张效果图









  • 相关阅读:
    【网易官方】极客战记(codecombat)攻略-森林-村庄守卫village-warder
    【网易官方】极客战记(codecombat)攻略-森林-乡村漫游者village-rover
    【网易官方】极客战记(codecombat)攻略-森林-Agrippa 守卫战 B-the-agrippa-defense-b
    【网易官方】极客战记(codecombat)攻略-森林-Agrippa 守卫战A-the-agrippa-defense-a
    【网易官方】极客战记(codecombat)攻略-森林-Agrippa守卫战the-agrippa-defense
    【网易官方】极客战记(codecombat)攻略-森林-以静制动stillness-in-motion
    【网易官方】极客战记(codecombat)攻略-森林-跃火林中forest-fire-dancing
    Can not deserialize instance of xxx out of START_ARRAY token
    Springboot/cloud 项目突然出现许多Failed to read artifact descriptor, 或者无法解析
    redis-deskmanager 连不上 虚拟机
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6951965.html
Copyright © 2011-2022 走看看