我从我的一位朋友那里得到了这段代码。
import java.io.*;
import javax.sound.sampled.*;
public class xx
{
public static void main(String args[])
{
try
{
File f=new File("mm.wav");
AudioInputStream a=AudioSystem.getAudioInputStream(f);
AudioFormat au=a.getFormat();
DataLine.Info di=new DataLine.Info(Clip.class,au);
Clip c=(Clip)AudioSystem.getLine(di);
c.open(a);
c.start();
}
catch(Exception e)
{
System.out.println("Exception caught ");
}
}
}
但是我不明白这行是什么意思Cilp c =(Clip)AudioSystem.getLine(di); 什么(剪辑)代表......? 我的第二个问题是什么是DataLine它是一个接口,这个语句的含义是什么DataLine.Info ....?
答案 0 :(得分:1)
DataLine是一个包含嵌套类“Info”的接口。声明如下:
DataLine.Info di = ...
创建类Info的新实例,该类在DataLine类中定义。
语句(Clip)就是我们所说的演员。它用于将对象从类型转换为另一种类型。 方法AudioSystem.getLine(di)返回Line类型的对象。所以基本上,你的朋友将返回的对象转换为Clip,用于实例化对象c。 允许并且不会生成错误,因为c是Clip类型,它扩展了DataLine,而DataLine本身扩展了Line。
希望这有帮助!