English 中文(简体)
Java动态功能创造
原标题:Dynamic Function Creation in Java

So I m trying to figure out if there is some method to dynamically create/assign a method to a class in Java. If it were C, I would just do it as follows using pointers:

public class Foo {  

  void bar(void *ptr) {....}  

};  

int main() {  
  Foo f = new Foo();  
  f.bar({"my function" ...})  
}  

However, Java of course has no pointers, so is there any way to get a similar functionality out of a Java application?

最佳回答

在 Java,你通常会宣布一种通话方法。 例如,如果你的职能只是想执行某些法典,你就会宣布一种可操作的操作方法。

public class Foo {
    void bar(Runnable function) {
       for(int i = 0; i < 5; i++) {
           function.run();
       }
    }

    static void myFunction() {
         System.out.println("my Function!");
    }

    public static void main(String[] ignored) {
         Foo f = new Foo();
         f.bar( new Runnable() { public void run() {
             myFunction();
         }});
    }

}
问题回答

为了产生真正有活力的方法,您需要一个密码-操纵图书馆,例如/Javassist

在java,它通过一些称为匿名的课堂来实现。

abstract class Bar {
    public void myfunc();
}

public class Client {

    public void execute()
    {
        doSomething(new Bar() {
            // define your dynamic function here ie provide its implementation
            public void myfunc() {
                //do whatever
            }
        });
    }

    public void doSomething(Bar b)
    {
        b.myfunc();
    }
}

你可以使用Java 字典,将这一功能作为文字,称作APIC。 但是,只有当你的职能在实际操作时能够完全界定时,才会这样做,因为解释性文字总是比在原 native执行慢。

rel=“nofollow”http://Functionjava.org/。 for功能图书馆。

这里有