我的代码中有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()函数。
可以这样做吗?
提前致谢!
答案 0 :(得分: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();
答案 1 :(得分: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
接口