2013-04-30 57 views
0

我早些时候发布了这个,但并不完全符合stackoverflow标准。我清理了代码,并且更详细地阐述了我的问题,所以这里有:如何在嵌套类的内部类中构造和使用对象?

我在一个CS1项目的小程序中制作了一个双人小行星游戏。我试图找出如何使用我可以在特定时间调用的方法来实现声音效果。我发现本教程(http://www.dreamincode.net/forums/topic/14083-incredibly-easy-way-to-play-sounds/)就是这样做的,但是我在嵌套循环语法方面遇到了一些麻烦。

如何从不同的类(在我的情况下,AsteroidsGame.java)构造Sound类中的'Sound'对象?

由于教程代码的混乱,这里是我的提高可读性。编辑1:刚刚记起来自最后一个线程的人建议我发布这是什么,当我编译/运行它。这个.java本身没有任何作用;但是当与我的其余项目一起放置时,它的确可以毫无错误地进行编译。编辑2:非常感谢Zim-Zam对你的所有帮助,如果有人发现这个主题并且有同样的问题,请咨询他的意见。

+1

FYI'赶上(例外五)的实例{}'是不是一个好主意。 – 2013-04-30 03:25:51

+0

*“一个CS1项目的小应用程序”*请参阅[为什么CS教师应该停止教学小程序?](http://programmers.stackexchange.com/questions/196499/why-should-cs-teachers-stop-teaching-applets ) – 2013-04-30 03:25:53

+1

*“..从最后一个线程的人..”*在这个问题上,请在将来编辑您的问题,而不是删除它,并开始一个新的。提供建议的人通常不喜欢重复自己。 – 2013-04-30 03:27:51

回答

1

我建议您将您的内部类更改为public static class Sound - 这将允许您构造类的实例,而不需要Audioapp的实例。

然后,要创建Sound的实例,您只需将其视为Audioapp.Sound(例如, Audioapp.Sound sound = new Audioapp.Sound()

如果内部类是不固定的,那么你可以使用Audioapp.Sound sound = audioApp.new Sound(),其中audioappAudioapp

+0

第一个建议几乎奏效,但我得到了一个“非静态方法getCodeBase()不能从静态上下文中引用”的错误。有任何想法吗? – RonaldRaygun 2013-04-30 03:38:28

+0

静态内部类只能引用封闭类中的静态方法和字段 - 您需要将方法更改为静态,或将类更改回非静态 – 2013-04-30 03:40:52

+0

我将我的Sound类更改回非静态,然后与你的第二个建议一起去。然而,我收到一个“无法找到符号”,它指向了audioapp,它在你的OP中是一个Audioapp实例。 – RonaldRaygun 2013-04-30 03:44:08