如何在非初始化对象的构造函数中调用对象方法?

时间:2016-05-07 10:22:10

标签: java constructor

我有ui对象允许我覆盖他们的tick方法,我想在这些tick方法中调用其他方法。但是我这样做的方式,对象还没有被初始化,所以它不起作用。 这是一个例子:

    //FPS       
    UITextRectangle fps = new UITextRectangle(
        handler, handler.getWidth()-64, 32, 32, 32, Color.DARK_GRAY, Color.GRAY,
        new Ticker(){
          @Override
          public void doTick(){
            //cannot call fps
            fps.setText(Integer.toString(handler.getFPS()));
          }
        });

我该如何使这项工作?任何和所有的帮助和建议表示赞赏!

编辑因为我的代码错了。

3 个答案:

答案 0 :(得分:1)

您可以使用Ticker模板方法,而不是传递doTick类:

class UITextRectangle {

    public void doTick() {
        // template method, is empty
    }
}
...
UITextRectangle tr = new UITextRectangle(...) {

    @Override
    public void doTick() {
        this.setText(...);
    }
};

答案 1 :(得分:0)

尝试直接调用它,你不需要使用fps对象,因为你在对象self的回调中

试试这个:

UITextRectangle fps = new UITextRectangle(handler, handler.getWidth()-64, 32, 32, 32, Color.DARK_GRAY, Color.GRAY, new Ticker(){
        @Override
        public void doTick(){ 
            setText(Integer.toString(handler.getFPS()));
        }
    });

答案 2 :(得分:0)

在班级中创建一个属性UITextRectangle fps

另一种解决方案是在初始化之后设置Ticker