看一下这段代码应该怎样改,最小的修改结构开线程播放声音
一个原来的类有播放声音函数如下:
Java code
public static void PlaySound(int id)
{
。。。。。。
}
由于声音时,会有短暂的停顿,想重新开一个线程,但是以前的调用方式不能改变。我这样做的
Java code
class SD implements Runnable{
int _id;
SD(int id){
_id = id;
}
public void run() {
cGame.PlaySoundEx(_id);
}
}
public static void PlaySoundEx(int id)
{
......//这里是完全使用的原来函数的功能
}
//把原来的同名函数替换了,然后重新起一个线程完成原来声音函数的调用
public static void PlaySound(int id)
{
new Thread ( new SD(1) ).start();
}
但是编译时有如下错误,请帮忙指正。原来的static属性是不能去掉的。
non-static variable this cannot be referenced from
a static context
sd = new SD(1);
------解决方案--------------------
静态方法访问非静太类,当然会出借了。
你把你的内部类改成静态的就可以了。也就是把SD这个类改成静态的。
------解决方案--------------------
LZ呀,你还可以换一种思路考虑一下你的问题。首先:class装载时,首先装载的是静态类,在静态类的装载过程中,你试图去初始化一个非静态的类。JDK当然不认识它了。这回就出错了。
------解决方案--------------------
变为外部类或者把class SD变为 static class SD