首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将方法传递给来自不同类的另一个方法

将方法传递给来自不同类的另一个方法
EN

Stack Overflow用户
提问于 2014-10-25 09:52:58
回答 1查看 64关注 0票数 0

基本上,我编写了一个微分方程解算器类,它将从“方程”类中提取方程,并使用rK4方法求解它。

我遇到的主要问题是,如果不通过继承扩展并获得访问权限,或者在ODE类中创建公式方法的特定实例,我无法找到将方法发送到另一个类的方法。

例如,我如何让下面的代码工作?(请记住,我不允许在ODE类中创建公式方法的特定实例):

代码语言:javascript
代码运行次数:0
运行
复制
public class Equations {
  public double pressureDrp( double a, double b) {
   return a+b;  //this is just a dummy equation for the sake of the question
  }
  public double waffles( double a, double b) {
   return a-b;  //this is just a dummy equation for the sake of the question
  }

}

public class ODE {
  //x being a method being passed in of "Equations" type.
  public double rK4( Equation method x ) {
    return x(3, 4);   
     //this would return a value of 7 from the pressureDrp method in class Pressure
    //if I had passed in the waffles method instead I would of gotten a value of -1.
  }
}
EN

回答 1

Stack Overflow用户

发布于 2014-10-25 10:13:51

我将使用一个接口来封装二进制方法的概念,并允许回调,类似于:

代码语言:javascript
代码运行次数:0
运行
复制
interface BinaryEquation {
   double operate(double d1, double d2);
}

然后可以将其放在您的公式类中,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
class Equations {
   public static class PressureDrop implements BinaryEquation {

      @Override
      public double operate(double d1, double d2) {
         return d1 + d2;
      }

   }

   public static class Waffles implements BinaryEquation {

      @Override
      public double operate(double d1, double d2) {
         return d1 - d2;
      }

   } 
}

并像这样使用:

代码语言:javascript
代码运行次数:0
运行
复制
class ODE {
   public double rk4(BinaryEquation eq) {
      return eq.operate(3, 4);   
   }
}

或者像这样更好:

代码语言:javascript
代码运行次数:0
运行
复制
public class BinaryTest {
   public static void main(String[] args) {
      System.out.println("PressureDrop(3, 4): " + new Equations.PressureDrop().operate(3, 4));
      System.out.println("PressureDrop(3, 4): " + new Equations.Waffles().operate(3, 4));
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26558613

复制
相关文章

相似问题

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