Java开发每日复盘2018_0521

作者: 07e819eca0df | 来源:发表于2018-05-21 18:41 被阅读26次

    今天跟大家分享一下,Java开发中,一些比较容易写错的注意事项。

    【1】Java实例化一个对象时。

    【2】Java方法参数设默认值写法。

    【3】写Dao层时。

    【4】写Service层时。

    【5】使用Service类时。

    【6】Java数组去重写法(之一)。

    【7】Double to int 类型转换写法(之一)。



    下面我们来一个一个说。

    【1】Java实例化一个对象时。



    Java实例化一个对象时,写法:

    A a = new A();
    

    Swift实例化一个对象时,写法:

    let a = A();
    

    此处注意项:Java实例化一个对象时,不要忘了写「new」这个关键字。
    ps.由于笔者之前开发常用的是Swift,所以在用Java实例化一个对象时,会容易忘记写 new(因为swift是不用写new的),在此特意提醒大家多注意下,避免重复踩坑。

    【2】Java方法参数设默认值写法。



    首先要说明一点:Java是不支持方法参数设默认值的,所以此处为一种替代写法(可以实现方法参数带默认值的功能)


    方法参数带默认值,我们为什么要让方法参数带默认值?


    最主要的原因,是我们想复用这个方法,但有一些调用该方法的地方,不需要转入那么多的参数,或者说,在很多调用该方法的地方,该方法的某个参数的传入值都是一样的,只在某些特别的少量的地方调用的时候,该参数的传入值才有一些不同。


    那么,方法的参数如果可以带上默认值,则可以极大的方便我们在多处复用/调用这个方法。(不用反复写同一个一样的参数传入值)


    正如上面说的,Java是不支持方法参数设默认值的。
    所以,这里的替代写法,是利用了Java的多态性,来巧妙地实现的。


    具体写法如下:
    java写法:

    public class X {
        public void A(int a, String b) {}
        public void A(int a) {}
    }
    

    这样,在调用的时候:

    public class XYZ {
        X x = new X();
        X.A(1);
        X.A(1,"abcd");
    }
    

    那么,这种写法(多态性),就相当于,给ClassX里的方法A的「String b」参数,设了一个默认值。
    即,你在调用A方法时,传入不传入该「String b」参数,都是可以成功调用A方法的。
    详见上方示例(在「Class XYZ」中调用「ClassX里的A方法」)


    ps.swift写法:

    class X {
        func A(a: Int, b:String = “abcd) {}
    }
    

    在调用的时候:

    class XYZ {
        let x = X();
        X.A(1);
        X.A(1,"abcd");
    }
    
    

    【3】写Dao层时注意事项。

    在前面的复盘中,《动态sql写法》,我们提到了「@SelectProvider」注解的用法。
    那么现在和大家说一下,使用过程中的注意事项。
    即:


    写了:

    @SelectProvider(type = ADaoProvider.class, method = "getXXXList”)  
        ……
    class ADaoProvider { 
        ……
    }
    

    的时候,一定要记得在对应的「Dao接口(interface)上面」写上:

    @Mapper
    

    完整写法如下:

    @Mapper
    public interface BaseDao {
        @SelectProvider(type = ADaoProvider.class, method = "getXXXList”)  
            ……
    
        class ADaoProvider { 
            ……
        }
    }
    

    【4】写Service层时注意事项。

    写Service层时,记得在其上方,带上关键字:

    @Service(“…..”)
    

    否则会报空指针异常。
    比如:

    @Service("AService")
    public class AService {
        public int getXXX(int a) {
        ……
        return “abcd”;
    }
    

    【5】使用Service类时。

    Service层写好后,当我们要使用/调用这个类的时候,写法是:

        @Autowired 
        AService aService;  
        String xxx = aService.getXXX(123);
    

    它类似于我们平时「实例化一个对象」,但Service类的实例化,不能想其他类那样来写,如果写成:

    AService aService = new AService();
    String xxx = aService.getXXX(123); 
    

    会报错,不能这么写。

    【6】Java数组去重写法(之一)。

        private List<Integer> duplication(List<Integer> a) {
            List<Integer> aDuplication = new ArrayList<>();
            boolean flag;
            for (int i = 0; i < a.size(); i++) {
                flag = false;
                for (int j = 0; j < aDuplication.size(); j++) {
                    if (a.get(i).equals(aDuplication.get(j))) {
                        flag = true;
                        break;
                    }
                }
                if (!flag) {
                    aDuplication.add(a.get(i));
                }
            }
            return aDuplication;
        }
    

    【7】Double to int 类型转换写法(之一)。

        public static Integer DoubleToInt(Double value) {
            Integer result = null;
            DecimalFormat df = new DecimalFormat("######0");
            try {
                result = Integer.parseInt(df.format(value));
            } catch (Exception e) {
                Logs.print(e);
            }
            return result;
        }
    

    —— zeroOS 复盘于 2018/05/21
    「zeroOS·简书号」
    © 著作权归作者所有

    相关文章

      网友评论

        本文标题:Java开发每日复盘2018_0521

        本文链接:https://www.haomeiwen.com/subject/qtuqjftx.html