解释一下这种代码写法

JMSUtil.MessageSendCallback callback=new JMSUtil.MessageSendCallback(){
            public Message get(Session session) throws JMSException
            {
                TextMessage message=session.createTextMessage();
                message.setIntProperty(JMSUtil.QUEUE_FOR_CAL_MESSAGE_TYPE_KEY, JMSUtil.MESSAGE_TYPE_FLOW);
                
                //TODO 设置为真实的信息
                message.setText(
                            caseNo+";"+         //作业号
                            url+";"+        //数据库ip
                            dbname+";"+     //数据库名
                            username+";"+   //用户名
                            pwd             //密码
                        );
                
                return message;
            }
        };

 

MessageSendCallback是JMSUtil这个类中的一个接口

 

问题有两个: 1。 类中写接口这个是不是叫做内部类啊?

                    2。上面这块代码的写法叫做什么? 是什么意思?

了解这个问题得先从内部类了解起,内部类有如下几种:
[b]成员式:静态内部类和一般成员内部类;[/b]
局部式:[b]普通局部内部类和匿名内部类。[/b]
详细看看分析和代码:[url=http://hi.baidu.com/qfjs6719/blog/item/34b7df7b0096e9e12e73b385.html]http://hi.baidu.com/qfjs6719/blog/item/34b7df7b0096e9e12e73b385.html[/url]

再深入了解匿名内部类的使用场景(项目中我们很少使用命名内部类,所以很陌生)
::::[url=http://yangguo.iteye.com/blog/546316]http://yangguo.iteye.com/blog/546316[/url]

JMSUtil.MessageSendCallback 是一个接口。

以下是生成类实现了该接口的
new JMSUtil.MessageSendCallback(){

public Message get(Session session) throws JMSException

{

[color=blue][b]这种写法是匿名内部类。[/b][/color]

是内部类, 不过由于没有名字, 所以叫匿名内部类.
上面话的意思就是生成一个实现callback接口的实例.

可以看一下这里的资料[url]http://java.chinaitlab.com/base/799160.html[/url]
或者看看,java编程思想, 里面有一章讲内部类的

[code="java"]new JMSUtil.MessageSendCallback[/code]
JMSUtil是包名,MessageSendCallback可以是类、抽象类、甚至是接口。
[b]如果你抽象类和接口必须实现其抽象方法,如果是类,可以不重写其方法也可以重写。[/b]

这篇文章详细介绍了几种匿名内部类使用:http://lifeising.iteye.com/blog/503880

楼上说的都正确,就是匿名内部类,匿名类可以是new 接口,也可以是new 类,但new出来的对象的类型实际上是new的接口或类的子类,如果类被定义为final,那就不能new匿名类了。详情请参考《Thinking in Java》。