所以问题标题有点奇怪,但这是我能想到的唯一方法。这样做我有一个NullPointerException
(额外的代码被取出):
public abstract class Generator extends SimpleApplication{
private static SimpleApplication sa;
public static void Generator(){
CubesTestAssets.initializeEnvironment(sa);
}
我知道private static SimpleApplication sa;
是null
但是当我实例化它时,我收到此错误而不是NullPointerException
:
SimpleApplication is abstract; cannot be instantiated
我正在使用jMonkey Engine 3.如果有人知道如何解决这个问题,那就太棒了!谢谢!
答案 0 :(得分:3)
如果您仔细查看JMonkey文档,可以使用SimpleApplication扩展您的应用程序。
您应该创建一个扩展SimpleApplication的新类并实现缺少的方法。然后,您实例化自定义类并将其作为参数传递。
有点像这样:
public class myCustomSimpleApplication extends SimpleApplication {
// Implementing the missing methods
@Override
public void simpleInitApp() {
}
@Override
public void simpleUpdate(float tpf) {
}
// etc...
}
然后......
private static SimpleApplication sa = new myCustomSimpleApplication();
public static void Generator(){
CubesTestAssets.initializeEnvironment(sa);
}
答案 1 :(得分:1)
正如其他人所评论的那样,扩展Generator
的基础应用程序类(我假设它是SimpleApplication
)不能是抽象的,即它应该至少实现simpleInitApp
方法。请参阅JMonkey
或basic example的SimpleApplication
文档。
为了完成,我将提到如果你真的需要创建一个抽象类的虚拟实例,你可以“内联”,而无需显式编写完整的实现类。您只需要在构造函数调用之后编写由大括号括起的抽象方法的实现:
public abstract class AbstractClass {
private static AbstractClass a = new AbstractClass() {
@Override
public void abstract_method() {/*implementation*/}
};
public abstract void abstract_method();
}
在幕后创建anonymous class。但我绝对不认为这是你在这种情况下所需要的。