0

我的代码中有 10 种特定方法,我想将它们与这样的类对象一起使用:

void function(){
//do Something that I want
}

class PoseAction{

Pose pose;

void methodDesirable();

PoseAction(Pose ps, Method function()){

  this.pose = ps;
  this.methodDesirable() = function();
}

}

所以当我创建一个新对象时

PoseAction ps = new PoseAction(pose1, action1());

调用 ps.methodDesirable();

它将调用 action1() 函数。

有可能做到这一点吗?

提前致谢!

4

2 回答 2

0

不,这是不可能的,Java 不支持delegates。在java中可以用接口完成:

interface Command {
    void doCommand();
}

PoseAction pa = new PoseAction(new Pose(), new Command() {
    @Override
    public void doCommand() {
        //method body
    }
});

new Command() {...}是实现Command接口的匿名内部类

于 2013-07-26T20:42:20.667 回答
0

函数不是java中的第一类对象。也就是说,您不能直接分配它们或将它们作为方法参数传递。您需要使用对象和接口:

interface Action {
    void fire(Pose pose);
}

class PoseAction {
    Action action;
    Pose pose;

    void methodDesirable() {
        action.fire(pose)
    }

    PoseAction(Pose ps, Action a) {
        pose = ps;
        action = a;
    }
}

并像这样使用它:

PoseAction ps = new PoseAction(pose1, new Action() {
     public void fire(Pose pose) {
          action1(pose);
     }
};
ps.methodDesirable();
于 2013-07-26T20:32:41.220 回答