所以我一直在尝试将这个音频实现到我的主类中。我的主类包含其他方法,我不会包括这些方法以防止我的帖子太长。我认为代码因out.audio audio = new out.audio ();
而出错,因为我要么把它放在错误的方法中,要么我没有使用正确的变量。我仍然是一个初学者编码器,所以我已经对我的代码中发生的事情感到困惑。我所知道的是,只运行音频类(不是嵌套)是有效的。
我是否正确格式化了嵌套类,是否可以嵌套音频?
import java.awt.*;
import hsa.Console;
import java.awt.image.*;
import java.util.Random;
import sun.audio.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
class out implements ImageObserver
{
//lots of code and other methods here so I'm going to leave it out
public static class audio extends Thread
{
out.audio audio = new out.audio ();
public void run ()
{
while (true)
{
AudioPlayer MGP = AudioPlayer.player;
AudioStream BGM;
AudioData MD;
ContinuousAudioDataStream loop = null;
try
{
InputStream test = new FileInputStream ("Music long.au");
BGM = new AudioStream (test);
AudioPlayer.player.start (BGM);
//MD = BGM.getData();
//loop = new ContinuousAudioDataStream(MD);
}
catch (FileNotFoundException e)
{
System.out.print (e.toString ());
}
catch (IOException error)
{
System.out.print (error.toString ());
}
MGP.start (loop);
try
{
Thread.sleep (200000);
}
catch (InterruptedException ie)
{
}
try
{
Thread.sleep (1500);
}
catch (InterruptedException ie)
{
}
}
}
public static void main (String[] args)
{
c = new Console ();
audio t1 = new audio ();
t1.start ();
for (;;)
{
c.println ("");
break;
}
} // main method
} // audio class
} //out class
答案 0 :(得分:0)
如果您要问何时使用嵌套类,请根据您的要求和设计 回答 。您可以自由使用嵌套类,但有时它会让您难以理解设计和更改它,如果它没有正确完成。
使用嵌套类的令人信服的理由包括:
- 这是一种逻辑分组仅在一个地方使用的类的方法
- 增加封装
- 它可以带来更易读和可维护的代码
醇>
<强> ==更新== 强>
正如我所提到的,对我而言,将audio
作为内部类是没有意义的,但是再次达到你的设计/要求,我也不确定 为什么你在内部类中声明了你的主要方法?? 所以,我建议你
class out
{
public static void main (String[] args)
{
//lots of code
}
}
class ImageImp implements ImageObserver
{
//lots of code and other methods here so I'm going to leave it out
}
然后你应该拿出内部课
class audio extends Thread
{
public void run ()
{
//code here
}
}
你的设计应该简单,应该有所帮助。在真正需要之前,不要试图将所有内容放在一个类中。