今天做一个小练习的时候遇到一个不常注意的问题。
问题描述:
调用一个方法,方法名为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
0票
开心
0票
板砖
0票
感动
0票
有用
0票
疑问
0票
难过
0票
无聊
0票
震惊
顶
踩