读书人

看一下这段代码应该怎样改最小的修改

发布时间: 2012-04-07 17:31:50 作者: rapoo

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

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

读书人网 >J2SE开发

热点推荐