首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

看一下这段代码应该怎样改,最小的修改结构开线程播放声音解决思路

2012-04-07 
看一下这段代码应该怎样改,最小的修改结构开线程播放声音一个原来的类有播放声音函数如下:Java codepublic

看一下这段代码应该怎样改,最小的修改结构开线程播放声音
一个原来的类有播放声音函数如下:

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

热点排行