开发者社区> 问答> 正文

将方法作为参数传递给Java中的另一种方法

我有3个方法执行相同的操作,但最后3个方法称为diff方法。因此,我想拥有一个方法,而不是使用3个方法,它将接受一个方法作为参数,并在最后调用

请问我该怎么做,我尝试看一下不起作用的java反射,不确定接口是否是正确的方法。

请建议谢谢R

class A {

doSameThingA(int x) { //do same thing with x methodA() } doSameThingB(int x) { //do same thing with x methodB() }

doSameThingC(int x) { //do same thing with x methodC() }

//I WANT TO WRITE A SINGLE FUNCTION replacing the above three doSameThing(int x, Method method) { //do same thing with x method() } }

-------

问题来源:stackoverflow

展开
收起
七天一失眠 2020-04-09 11:18:45 1900 0
2 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。

    2020-04-09 19:49:36
    赞同 展开评论 打赏
  • 做一个优秀的阿里云志愿者

    ava中存在一个运算符,称为双冒号运算符。它也称为方法引用运算符,因为它引用方法,并且我相信此功能将使您可以通过参数化方法来解决问题。有点像lambdas。

    class A { public static void main(String... args) { new A().doSameThing(1, MethodClass::printSomething); }

    void doSameThing(int x, Runnable method) {
        method.run();
    }
    

    }

    class MethodClass { public static void printSomething() { System.out.println("Hello World"); } }

    以上是一个例子。MethodClass包含要运行的方法(例如methodA(),methodB(),methodC()等。doSameThing方法采用Runnable,这是一个不带参数且不返回任何值的功能接口)。通过传递不带参数且不返回值的printSomething方法,我们可以在doSameThing方法中运行该方法。

    当然,您使用的功能接口的类型将取决于您的方法设计要实现的功能。

    此外,如果您的其他方法(methodA(),methodB(),...)未在代码中的其他任何地方使用,则可以使用匿名类在适当位置实现可运行接口。以下是该形式的先前示例:

    class A { public static void main(String... args) { new A().doSameThing(1, new Runnable() { public void run() { System.out.println("Hello World"); } }); } void doSameThing(int x, Runnable method) { method.run(); } }

    由于Runnable是功能性接口,因此您甚至可以为此使用lambda表达式。

    class A { public static void main(String... args) { new A().doSameThing(1, () -> {
    System.out.println("Hello World"); }); } void doSameThing(int x, Runnable method) { method.run(); } }

    -------
    

    答案来源:stackoverflow

    2020-04-09 11:19:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载