首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的变量函数

问Java中的变量函数
EN

Stack Overflow用户
提问于 2012-11-23 00:55:38
回答 5查看 7.8K关注 0票数 2

在Java语言中,有没有可能通过某种方法将函数赋给变量,就像在PHP或JavaScript中一样?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-23 00:58:11

在Java语言中,有Method和MethodHandles,它们可以通过反射调用方法,但语言还不支持这一点。

在Java 8中,您将能够使用对方法的引用。

票数 4
EN

Stack Overflow用户

发布于 2012-11-23 00:56:52

在今天的java中,不,你不能。

与您最近的是接口:您不存储函数,而是存储定义所需函数的接口的实现。

一个典型的例子是the Comparator interface的实现:

代码语言:javascript
复制
Comparator<ProductSearchResult> c = new Comparator<ProductSearchResult>() {
    public int compare(ProductSearchResult result1, ProductSearchResult result2) {
        return result1.product.getRsId().compareTo(result2.product.getRsId());
    }
};
Collections.sort(groupResults, c); // I pass a function, wrapped in my Comparator implementation
票数 3
EN

Stack Overflow用户

发布于 2012-11-23 01:03:40

最接近的是与接口结合的内部类。它们不仅可以携带一个函数(方法),而且可以携带许多函数(方法),如果愿意,可以将这些函数(方法)委托回主类方法。但这个解决方案可能很容易过于重量级:

代码语言:javascript
复制
class Main {

   interface X { 
     void doX();
   }

   class Ref1 implements X {
     void doX() { doA(); };
   }

   class Ref2 implements X {
     void doX() { doB(); };
   }

   void doA() {  };
   void doB() {  };

   void demo() {
      X x = new Ref1();
      x.doX();
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13517153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档