弱点描述
“STCAL” 是指 “Static use of type Calendar or DateFormat”,即静态使用 Calendar 或 DateFormat 类型。该弱点的风险等级是中等。
在 Java 中,Calendar 和 DateFormat 类型通常被用于处理日期和时间。然而,它们是线程不安全的,这意味着在多线程环境下使用它们可能会导致错误的结果。因此,官方文档建议尽可能地避免静态使用这些类型。
示例代码
/**
* @Title: STCAL.java
* @Package com.osxm.weekness.medium
* @Description: TODO
* @author XM
* @date 2023年5月8日 下午9:30:50
* @Copyright: 2023
* @version V1.0
*/
package com.osxm.weekness.medium;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class STCAL {
private static SimpleDateFormat ldf;
public static SimpleDateFormat stacl() {
ldf = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss:SSS");
ldf.setTimeZone(TimeZone.getDefault()); //提示有风险1
String dateStr = ldf.format(new Date()); //提示有风险2
System.out.println(dateStr);
return ldf;
}