是否可以让类 A
有一个空方法说 render()
.. 然后你创建类的 3 个实例,所以你有对象 b、c、d
,那么我可以为每个对象的渲染方法分配主体吗?
这是一个例子,在 JavaScript 中你可以让一个对象说 a
然后在任何你可以说的地方
a.method = function() { /* do something */ }
在该行之后,您将拥有一个名为 method
的方法,用于对象 a
并且无论何时调用它都会 /* 做一些事情 */
.
这在 Java 中可行吗?语法是什么?
我的想法是有一个 button
类,并在它使用的不同情况/上下文中为其实例的 click
方法分配不同的操作,所以我没有为每个 Action 定义不同的子类。
最佳答案
在 Java 中,您不能像在 Javascript 中那样传递函数。
您需要创建一个类 或接口(interface),调用类似Handler
的东西(最好是更具描述性的东西!),它声明您想要的方法称呼。然后你可以做类似的事情:
a.method = function() { /* do something */ }
但你必须将其表述为
a.method = new Handler() {
public void function() {
/* do something */
}
};
并将其称为a.method.function()
。
My idea is to have a
button
class and assign different actions to it's instance'sclick
method inside the different situations / context it is used, so I don't have to define a different child class for each action.
Swing 正是这样做的。它通常看起来像这样:
myButton.setAction(new AbstractAction("Click me!") {
public void actionPerformed() {
// do something
}
});
关于java - 动态地将方法体重新分配给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849963/