Java不可以, JavaScript可以, 也就是所谓的回调函数

解决方案 »

  1.   

    不可以。
    如果你是想在当前函数里面,动态根据传递的参数进行调用的话。可以利用反射机制做到。
    比如:
    import java.lang.reflect.Method;
    public class Impl {
    public static void doSomething(Class clazz, String methodName, Object ...objects) throws Exception{
    Method method = null;
    switch (objects.length) {
    case 0:
    method = clazz.getMethod(methodName);
    method.invoke(clazz.newInstance());
    break;
    case 1:
    method = clazz.getMethod(methodName, objects[0].getClass());
    method.invoke(clazz.newInstance(),objects[0]);
    break;
    case 2:
    method = clazz.getMethod(methodName, objects[0].getClass(), objects[1].getClass());
    method.invoke(clazz.newInstance(),objects[0],objects[1]);
    break;
    default:
    throw new RuntimeException("只支持3个以下(不含)参数的函数调用。");
    }
    } public void m(String str){
    System.out.println("---------" + str);
    }

    public static void main(String[] args){
    try {
    doSomething(Impl.class,"m","i am a gay.");
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    这个代码还有些问题。。就是参数个数和类型不太好弄。用起来不太方便,但是使用方法原理已经给到了。
      

  2.   

    不可以   但有办法解决这个问题
    你定义一个抽象类,然后在抽象类里定义你要传入的函数(抽象的),好了,你可以在你现在的函数里传入new 抽象类,你发现IDE提示你要实现那个方法,你现在可以写你要传入的函数了。
      

  3.   

    5L对的,Executor.execute(Runnable) 就是这个意思
      

  4.   

    不可以,java根本不存在函数对象,但可以用变通的方法,类似C++的functor,你弄个传个类,让函数内部调用这个类的某个方法就行。现在java已经支持lamba,所以这个问题可以进一步简化,仍旧是传个类,只要这个类满足一定条件,加上使用lamba,就好像传了个方法一样,比如fun(a, v -> v);这里的v -> v就是个简单的lamba表达式,功能就是直接将传入的参数v返回,至于这个v是什么,就复杂了,建议你百度一下java的lamba
      

  5.   

    Java 方法的 参数 可以是 对象类型,可以调用对象的方法
      

  6.   

    Java的参数可以使基本数据类型,自定义对象类型,数组、字符串、List集合和Set集合对象等等类型都可以。函数和方法不行。
      

  7.   

    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });
    差不多是这个吧。
      

  8.   

    java虽然不支持这个,但是有很多的变通方法可以解决这个问题,例如用反射是可以很好的解决这个问题的。据说最新jdk已经支持了闭包,不知道是不是真的,我还没有用过。
      

  9.   

    java可以用函数对象,来实现函数式编程。effective java 第21条 用函数对象表示策略,即使这个意思。
      

  10.   

    你可以传 对象然后调用对象的方法  在java里 函数也是一个对象 可以把这个 对象当参数 然后用反射调用
      

  11.   

    答案是jdk8以前不行,jdk8开始可以比如在jdk8里你可以用String test(Function<String, String> func, String input){
       return fun.apply(input);
    }你有个method
    String reverse(String orig){
     ...
    }String encode(String text){
    ...
    }然后你可以这样调用test
    test(s->reverse(s), "Hello"); //olleH
    test(s->encode(s), "Hello"); //Cipher string