看一下这段代码应该怎样改,最小的修改结构开线程播放声音解决思路
阅读
一个原来的类有播放声音函数如下:
- 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
阅读
上一篇:JCheckBox数组怎么获得里面被选中的值 下一篇:返回列表