Java开发每日复盘2018_0521
今天跟大家分享一下,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·简书号」
© 著作权归作者所有