动态地将方法体重新分配给对象

Ton*_*nov 1 java methods overriding class dynamic

是否有可能让类A使用空方法说render()..然后你创建了3个类的实例,所以你有对象b, c, d,那么我可以为每个对象分配渲染方法的实体吗?

这是一个例子,在JavaScript中你可以有一个对象说a,然后你可以说的任何地方

a.method = function() { /* do something */ }
Run Code Online (Sandbox Code Playgroud)

在该行之后,您将拥有一个带有method该对象名称的方法,a并且每当被调用它时/* do something */.

这在Java中是否可行,语法是什么?

我的想法是创建一个button类,并click在其使用的不同情境/上下文中为其实例的方法分配不同的操作,因此我不必为每个操作定义不同的子类.

aio*_*obe 7

在Java中,您无法在Javascript中传递函数.

你需要创建一个类似于(最好是更具描述性的东西)的接口Handler来声明你想要调用的方法.然后你可以做类似的事情:

a.method = function() { /* do something */ }
Run Code Online (Sandbox Code Playgroud)

但你必须将其表述为

a.method = new Handler() {
    public void function() {
        /* do something */
    }
};
Run Code Online (Sandbox Code Playgroud)

并称之为a.method.function().

我的想法是创建一个button类,并click在其使用的不同情境/上下文中为其实例的方法分配不同的操作,因此我不必为每个操作定义不同的子类.

这正是Swing如何做到的.它通常看起来像这样:

myButton.setAction(new AbstractAction("Click me!") {
    public void actionPerformed() {
        // do something
    }
});
Run Code Online (Sandbox Code Playgroud)