Spring-BootJava开发·持续学习·分享新知MyBatis+SpringMVC+SpringBoot

Java开发每日复盘2018_0521

2018-05-21  本文已影响26人  07e819eca0df

今天跟大家分享一下,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·简书号」
© 著作权归作者所有

上一篇下一篇

猜你喜欢

热点阅读