使用内部类构造监听器