看下面的代码:
public class Confusing {
private Confusing(Object o) {
System.out.println("Object");
}
private Confusing(String str) {
System.out.println("String");
}
public static void main(String[] args) {
Confusing cfs = new Confusing(null);
if (null instanceof Object) {
System.out.println("true");
}
}
}
结果是打印出:String. 也就是说
new Confusing(null);只会去调用参数为Stirng 的构造方法,Object又是String的父类,所以它会调用
private Confusing(String str) {
System.out.println("String");
}方法,而不会去调用Object那个,
但是如果两个构造方法中的参数不是父子关系,程序就会报错。所以尽量不要在程序中出现以上的情况。
BufferedReader 从控制台取值
// new InputStreamReader(System.in)从控制台取得数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = null;
System.out.println("请输入内容:");
while ((s = br.readLine()) != null) {
if (s.equalsIgnoreCase("exit") || s.equalsIgnoreCase("quit")) {
break;
} else {
ExecLog(log, s);
}
}