【问题标题】:how to pass a method from different class to another class in Java?如何将不同类的方法传递给Java中的另一个类?
【发布时间】:2011-03-27 08:52:51
【问题描述】:

有2个文件名为:

  1. AnnuityDueGUI.java
  2. AnnuityDueResultGUI.java

在AnnuityDueGUI.java下,有如下方法:

=============

public double calculateFADGUI(){
        //FVA = A{[(1+i)^n – 1] / i} (1+i)
        String amountStr = amount.getText() ;  //convert string to double
        dAmount = Double.parseDouble(amountStr) ;
        String iStr = iText.getText() ;
        dInterest = Double.parseDouble(iStr) ;
        String periodStr = period.getText() ;
        dPeriod = Double.parseDouble(periodStr) ;
        iPeriod = (int)dPeriod ;
        due = new Annuity(dAmount, dInterest, iPeriod) ;
        System.out.println(due.calculateFAD()) ;
        return due.calculateFAD() ;   //calculateFAD() is under Annuity.java
    }

================

在 AnnuityDueResultGUI.java 下,如何从我上面所说的方法中获取结果?两个类都在同一个包“GUI”下。我也做了import AnnuityDueGUI.* ;

但仍然不知道如何从 AnnuityDueGUI.java 中获取结果并将其显示在 AnnuityDueResultGUI.java 下。

请提前协助和感谢。

【问题讨论】:

    标签: java class methods import package


    【解决方案1】:

    您需要在 AnnuityDueResultGUI 中引用 AnnuityDueGUI 对象。比如

    AnnuityDueGUI adg = new AnnuityDueGUI()
    double result = adg.calculateFADGUI()
    

    更新

    另外,如果您碰巧已经在其他地方构建 AnnuityDueGUI,您可以将引用传递给 AnnuityDueResultGUI

    public AnnuityDueResultGui(AnnuityDueGUI adg) {
        this.adg = adg;
    }
    
    private void otherFunc () {
        double results = this.adg.calculateFADGUI()
    }
    

    【讨论】:

    • 正是我要回答的...我需要更快;)
    • 我不确定 amount 变量存储在哪里,但如果它不是 AnnuityDueGUI 的一部分,那么请考虑将 calculateFADGUI 设为静态并传入 amount。
    【解决方案2】:
    class AnnuityDueGUI {
    
    public double calculateFADGUI(){
            //FVA = A{[(1+i)^n – 1] / i} (1+i)
            String amountStr = amount.getText() ;  //convert string to double
            dAmount = Double.parseDouble(amountStr) ;
            String iStr = iText.getText() ;
            dInterest = Double.parseDouble(iStr) ;
            String periodStr = period.getText() ;
            dPeriod = Double.parseDouble(periodStr) ;
            iPeriod = (int)dPeriod ;
            due = new Annuity(dAmount, dInterest, iPeriod) ;
            System.out.println(due.calculateFAD()) ;
            return due.calculateFAD() ;   //calculateFAD() is under Annuity.java
        }
    
    //...other code
    }
    
    class AnnuityDueResultGUI {
    
    AnnuityDueGUI var = new AnnuityDueGUI();
    double result = var.calculateFADGUI();
    //other code
    }
    

    【讨论】:

      【解决方案3】:

      参照实际的AnnuityDueGUI实例创建AnnuityDueResultGUI,然后就可以访问方法了:

      public class AnnuityDueResultGUI {
        private AnnuityDueGUI parent;
      
        public AnnuityDueResultGUI(AnnuityDueGUI parent) {
          this.parent = parent;
        }
      
        public void somemethod() {
          parent.calculateFADGUI();  // now you can access a method from a AnnuityDueGUI  instance
        }
      }
      

      AnnuityDueGUI的方法内部的某处:

      // ...
      AnnuityDueResultGUI resultGUI = new AnnuityDueResultGUI(this);
      // ...
      

      【讨论】:

        猜你喜欢
        • 2021-04-12
        • 2022-01-16
        • 1970-01-01
        • 2015-11-19
        • 2021-12-18
        • 1970-01-01
        • 2012-07-07
        • 2018-08-01
        • 2013-03-19
        相关资源
        最近更新 更多