匿名内部类中的方法

时间:2013-11-21 13:17:48

标签: java class anonymous-class

    public void run() {
    jmsTemplate.send(new MessageCreator() {
        public Message createMessage(Session session) throws JMSException {
            byte[] buf = createBytesMessage(5120);
            BytesMessage message = session.createBytesMessage();
            message.writeBytes(buf);
            message.setLongProperty("_publish_time", System.currentTimeMillis());
            return message;
        }   
    });
}

我有这段代码片段,我能说的是它使用的是匿名类。 但我对如何在线程调用run()时调用createMessage()方法感到困惑?

我读到的某个地方也没有“匿名课”,而是“匿名内部课”。为什么会那样?

2 个答案:

答案 0 :(得分:4)

  

但我对如何调用createMessage()方法感到困惑   什么时候线程调用run()?

jmsTemplate期望传递MessageCreator个实例,它将负责调用MessageCreator的createMessage()方法。

  

我读到的某个地方也没有像“匿名课”那样的东西   而是它的“匿名内部阶级”。为什么会那样?

是。正确的定义是匿名内部类,因为没有匿名公共类这样的东西。虽然本地类是类声明,但anonymous classes是表达式,这意味着您在另一个表达式中定义该类,因此它们被称为 inner

更多信息:

答案 1 :(得分:2)

它是一个“匿名内部类”,因为它不是一个独立的类,它是一个带有一些抽象方法的类,你已经在另一个类中声明了。

至于方法本身,在我查找类之前,我假设你发送给它的处理程序(msTemplate)只接受一个方法createMessage的接口