先說結論:接口、抽象類是不可以被new的。
但是今天在寫外部比較器Comparator時,我發現有這種寫法
// 使用comparator比較器接口 Comparator comparator = new Comparator(){ public int compare(Object o1, Object o2) { if (o1 instanceof orderNode && o2 instanceof orderNode) { orderNode a1 = (orderNode) o1; orderNode a2 = (orderNode) o2; return a1.val - a2.val; } return 0; } };
這不就是new一個接口了嗎?
但是注意,后面還有大括號,這相當於一個實現了接口的匿名類,我們需要在其內部{}內把接口的方法實現。