Java-语句/转换| Pulpcore

Java-语句/转换| Pulpcore,java,actionscript-3,pulpcore,Java,Actionscript 3,Pulpcore,[请注意,这可能需要AS3+Java知识] 背景资料: 我正在尝试使用Java+Pulpcore构建一个游戏,但我对这个场景还相当陌生。我正在构建的游戏可能比我想象的性能更高,我知道Java可以解决我的问题,但是我在处理严格类型时遇到了一些问题,等等 以下是我在AS3中的代码: Main.as3 import org.tbmb.champions.Container; import org.tbmb.zombies.ZContainer; public class Main extends M

[请注意,这可能需要AS3+Java知识]

背景资料:

我正在尝试使用Java+Pulpcore构建一个游戏,但我对这个场景还相当陌生。我正在构建的游戏可能比我想象的性能更高,我知道Java可以解决我的问题,但是我在处理严格类型时遇到了一些问题,等等

以下是我在AS3中的代码:

Main.as3

import org.tbmb.champions.Container;
import org.tbmb.zombies.ZContainer;

public class Main extends MovieClip {

    // ******* temporary properties ******* /
    private var blunder:Container = null;
    // *******                      ******* /

    public function Main() {

        init(); // initialize objects

    }

    public function init():void {

        blunder = new Container(Blunder as Class);

    } // end of class

}
容器as3

 package org.tbmb.champions {

     import flash.display.MovieClip;

     public class Container extends MovieClip {

          public function Container(champ:*) {

          } // end of constructor

     } // end of class

 } // end of package
大错特错

package org.tbmb.champions.blunder {

    import flash.display.MovieClip;

    public class Blunder extends MovieClip {

        public function Blunder() {

        } // end of constructor

    } // end of class

} // end of constructor
1.)如何用Java重写

blunder = new Container(Blunder as Class);
2.)我如何能够在容器类中接受上述行的Java类

public function Container(champ:*) {
我之所以需要这样做,是因为我正在将不同的冠军类(取决于用户选择的)发送到一个包含它们的所有其他类(健康等)的类。我需要我的容器类接受任何类而不是一个;我会用什么类型的

以下是迄今为止我在Java中所掌握的知识:

zombopilp.java(主类)

Container.java

package org.tnpfk.champions;

public class Container {

    public Container(Object champ) {

    } // end of constructor

} // end of class
很抱歉发了这么长的帖子,谢谢你的帮助。顺便说一下,我确实检查了StackOverflow;还有谷歌,但我找不到任何关于这方面的信息

谢谢,
JVM纸浆

好的!我没有使用PulpCore的经验,但我知道AS3和Java,所以我想我可以回答你的问题。首先,我想我不是100%理解您需要在容器类中对champ对象做什么,我真的不理解您为什么要将
错误作为类来处理,而不是仅仅传递一个错误实例。无论哪种方式,以下是我对您目前拥有的产品的推荐:

public void initObjects() {

    container = new Container(Blunder.class);

}
如您所见,只需获取任何类的
Class
属性即可获得类实例。现在,使用
Object
作为任何类型的容器构造函数的类型是正确的。然而,使用
对象
是不好的做法(而是使用方法重载/更具体的类型),这里甚至不需要它。获取
class
属性的类型始终为
class
,即使它们代表不同的类。因此,将构造函数重写为:

public Container(Class champ) {

}
然后,在课堂上做任何你需要做的事情

现在,这基本上是一个直接端口,但似乎你正在做的一些事情是不好的做法。传递
对象的整个系统似乎不相关,也没有必要;为什么不直接传递对象的实例呢?例如,像这样:

public class Container {

    protected Champion champ;

    public Container(Champion champ) {

        this.champ = champ;

    }

}
现在,让
Champion
成为一个抽象类,其中包含所有Champion的通用方法:

public abstract class Champion {

    protected Something something;

    abstract Something getSomething();

}
(显然,这里显示的变量/方法只是示例。)然后,让您的单个Champion类子类
Champion

public class Blunder extends Champion {

    public Something getSomething() {
        return this.something;
    }

}
等等。然后,最后,执行以下操作:

public void initObjects() {

    container = new Container(new Blunder());

}
显然,这是一个基本的例子,你不必接受我的建议。但这可能比AS3中已有的系统更容易实现

public void initObjects() {

    container = new Container(new Blunder());

}