public static final String BATCH_MODE_FLAG = "-b";
//批处理模式标记,final:终态,不可变化
public static final String RANGE_DELIMETER = ":";
//范围分隔符,用冒号
public static final String RESET_METHOD_NAME = "reset";
//重置方法名称
private static List<Class<?>> resetList = new ArrayList<Class<?>>();
//类名列表,在批次处理期间重置
System.exit(-1);
//暂停Java虚拟机
java.util.Locale.setDefault(java.util.Locale.US);
//为Java虚拟机实例设置默认语言环境:US(美国)。
//参数类型为 Locale 的 java.util 中的方法:java.util.Locale.setDefault
//声明为 Locale 的 java.util 中的字段java.util.Locale.US(用于表示国家/地区的有用常量)
if (args.length > 0) {
//与public static void main(String[] args) ,所以args.length 表示传入参数的个数
if (args[0].equals(BATCH_MODE_FLAG)) {
batchMode = true;
//传入的第一个参数若为“-b”,则运行方式为批处理
int firstConfIndex = 0;
//与传入参数个数相关:个数为1,赋值1;否则赋值2
int nrofRuns[] = {0,1};
//二元数组
nrofRuns = parseNrofRuns(args[1]);
//private static int[] parseNrofRuns(String arg)
//第二个参数是二元数组
int guiIndex = 0;
guiIndex = Integer.parseInt(args[0]);
//第一个参数变为十进制,对应查错:NumberFormatException
String confFiles[];
confFiles = args;
//传入所有参数进入记录
initSettings(confFiles, firstConfIndex);
//private static void initSettings(String[] confFiles, int firstIndex)
//初始化相应的设置文件
long startTime = System.currentTimeMillis();
//系统产生一个当前的毫秒时间赋值给变量
Settings.setRunIndex(i)/(guiIndex);
//设置
resetForNextRun();
//public static void registerForReset(String className)
//下次运行重置
new DTNSimTextUI().start();
//开始
String.format("%.2f", duration)
//将变量duration的值转换成与"%.2f"同等格式的值
System.err.println("Caught at " + er.getStackTrace()[0]);
//调试异常时进行输出
//获得错误点的堆栈踪迹
Class<?> c = null;
//类列表
c = Class.forName(className);
//装载括号中的类,类似于new,对应查错:ClassNotFoundException
c.getMethod(RESET_METHOD_NAME);
//获取括号中的方法,对应查错:NoSuchMethodException
resetList.add(c);
//重置列表中添加一个新类
for (Class<?> c : resetList) {
//将resetList中的值一次取出赋给c
Method m = c.getMethod(RESET_METHOD_NAME);
m.invoke(null);
//method.invoke(owner, args):执行该Method.invoke方法的参数是执行这个方法的对象owner,和参数数组args,可以这么理解:owner对象中带有参数args的method方法。返回值是Object,也既是该方法的返回值。
//括号内为空值表示忽略该方法(但不是省略)
catch (Exception e) {
e.printStackTrace();
//打印出错误的出错位置及原因
arg.contains(RANGE_DELIMETER)
//传入参数包含范围分隔符
arg.substring(0, arg.indexOf(RANGE_DELIMETER))
//截取字符串中0与arg.indexOf之间的部分
//搜索字符串中的RANGE_DELIMETER(从0位开始)
private static void print(String txt) {
System.out.println(txt);
//打印文本至标准输出