今天在测试一个打印日志的功能的时候发现了一个三目运算符 ?:的特别的地方,希望能给大家带来些帮助。
代码如下:
public class Static1 {
private static Date date;
public static Date getDate() {
Date temp = null;
temp = date == null ? new Date(System.currentTimeMillis()) : date;
return temp;
}
}
大家可以看到,date是个类变量,我在调用getDate()方法之后,发现date在得到新对象之后将引用传给temp,然后自己就释放了,相当于执行了如下代码:
date == new Date(System.currentTimeMillis());
date = null;
其实这样的用法在 想快速释放类变量的情况下可以使用,但是在单例的情况下,一般不要使用,不然就没有起到单例的效果。