今天做一个小练习的时候遇到一个不常注意的问题。
问题描述:
调用一个方法,方法名为executeQueryForInteger(String sql, Object... params)
因为用不到第二个参数于是就构造一个空的对象数组
调用的时候写成了如下,super.executeQueryForInteger(sql, new Object(){});
编译无错,但运行出错。
正确的调用是super.executeQueryForInteger(sql, new Object[]{});
new Object(){};这种方式以前只是在swing的事件中用到过,这是匿名类的一种常见写法。
匿名类的作用常见的就是swing的注册事件,其他的还真不是很了解。
public class Test {
public void j(){
System.out.println(1);
}
public void t(){
j();
}
public static void main(String[]args){
Test test1 = new Test();
Test test2 = new Test(){
public void j(){
System.out.println(2);
}
};
test1.t();
test2.t();
}
}
输出:
1
2
会生成两个class文件,分别为Test.class和Test$1.class