日期:2014-05-20  浏览次数:20686 次

在看一个开源ESB项目MULE的源代码的时候遇到一个问题,请大家帮忙
mule有一个类,叫AbstractOutboundRouter,在里面有个dispatch方法,方法里面有这么一行代码
TransactionCallback cb = new TransactionCallback()
而TransactionCallback却是一个interface...我被这个用法搞糊涂了,在java里面,interface不是不能被实例化的么?那为什么他这里却能这样用呢?
TransactionCallback的定义如下:
package org.mule.api.transaction;

public interface TransactionCallback
{
  Object doInTransaction() throws Exception;
}


------解决方案--------------------
探讨

你说的是我如果有一个实现类实现了TransactionCallback这个接口,假定为TransactionCallbackImpl类,那可以通过TransactionCallback cb=new TransactionCallbackImpl()来实现方法回调,但我说的意思是他这里直接new了TransactionCallback这个接口来生成一个接口的实例,这样好像违背了接口不能实例化的原……