可能重复:
为什么不使用接口类型的这些变量来实例化新对象?
在下面来自我正在使用的API的代码示例中,有一个变量“audiodecoder”和“cc”的初始化。这两个变量是接口类型。但是,关键字implements在代码示例中的任何地方都没有使用,除了 actionlisteners。
这与我迄今为止所学到的有关 Java 的任何知识都背道而驰。我在下面列出了 import 语句,认为它们可能对为什么 IDecoder 和 ICodecContextWrapper 没有相应的implements语句有一些线索。我也试图找到一些关于以这种方式使用接口的文档,但没有成功。有人可以向我解释为什么不使用关键字implements吗?这个概念是否有名称,或者您所知道的有关该概念的一些文档?
编辑:我还应该补充一点,示例代码中也没有使用关键字new声明变量。
import org.libav.audio.Frame2AudioFrameAdapter;
import org.libav.audio.PlaybackMixer;
import org.libav.audio.SampleInputStream;
import org.libav.avcodec.ICodecContextWrapper;
import org.libav.avformat.IChapterWrapper;
import org.libav.avformat.IFormatContextWrapper;
import org.libav.avformat.IStreamWrapper;
import org.libav.avresample.bridge.AVResampleLibrary;
import org.libav.avutil.IDictionaryWrapper;
import org.libav.avutil.bridge.AVChannelLayout;
import org.libav.avutil.bridge.AVSampleFormat;
import org.libav.bridge.LibraryManager;
import org.libav.data.IFrameConsumer;
import org.libav.util.swing.VideoPane;
IDecoder audioDecoder = player.getAudioStreamDecoder(streamIndex);
ICodecContextWrapper cc = audioDecoder.getCodecContext();