【问题标题】:Calling a Method if another Method is called如果调用了另一个方法,则调用一个方法
【发布时间】:2014-09-21 01:21:13
【问题描述】:

我很好奇。在 Java 中,是否可以在方法中嵌套新创建的方法?我问这个是因为在我的书中每个部分都有这些练习练习(我目前在对象/类上),并且有一个问题告诉你如果另一个方法 - 在同一个类中 - 被调用,则将布尔方法称为 true (在被称为布尔变量的类中变为真)。这是一个例子:

public void setTrue(int someRandomStuff) {
   this.someRandomStuff  = superRandomStuff; 
   // this is where the boolean variable comes into play
   trueOrFalse = true;
}

现在我想知道如果方法 setTrue 将 'trueOrFalse' 设置为 true,是否可以在此方法中放置另一个方法来调用?还是我必须完全创建另一种方法?我只是这样尝试,因为我还没有真正读过任何说这是不可能的东西。我已经这样尝试过了,但 IntelliJ 并没有真正显示它是否错误,所以我假设它一定是可能的。

以下是我为进一步澄清我的意思所做的尝试:

public void setTrue(int someRandomStuff) {
   this.someRandomStuff = superRandomStuff;
   trueOrFalse = true;
   if (trueOrFalse) { 
     public boolean getTrueOrFalse() {
     return true;
   }
}

我真诚地试图了解事情为什么以及如何以他们的方式工作,而不是仅仅因为有人/某事告诉我事情就是这样,而且永远都是这样。

如果您对格式感到好奇或想要与本书类似的练习,这本书称为:Introduction to Java, Comprehensive Version (9th Edition).

【问题讨论】:

  • 您的代码没有任何缩进,这使得所有代码都是合理的,并且难以阅读、理解和调试。我已经重新格式化了你发布的代码,给它一致的缩进,并确保同一块上的所有代码都在相同的缩进级别。将来,您会想自己做这件事。我们将非常感谢您在这方面的合作,并可能会增加您获得体面和及时答复的机会。
  • 为什么不用参数传递你的方法?
  • @HovercraftFullOfEels 抱歉,这个界面在平板电脑上有点难用;突出显示的文本提示我的 iPad 功能。 shinjw 你这是什么意思?不完全理解您要表达的意思,请澄清。

标签: java object methods


【解决方案1】:

你不能像这样嵌套你的方法。从您的代码来看,您似乎想要设置一个类变量。将方法变量设置为true,将类变量设置为true

boolean isMethodCalled = false;

public void doMethod(int someRandomStuff) {
   this.someRandomStuff = superRandomStuff;
   isMethodCalled = true;
}

然后您可以定义另一个返回 trueOrFalse 类变量的方法

public boolean getIsMethodCalled() {
   return isMethodCalled;
}

当 doMethod 被调用时,这将使 isMethodCalled 为真。否则 isMethodCalled 将返回 false。

【讨论】:

  • 嗯,我不确定这是否是书中问题所要求的。我只想看看答案,梁(这本书的作者)在他的在线文本版本的书的这个特定部分没有答案。该问题要求您创建一个在调用另一个方法时返回 true 的方法。这样做的好处是,在被调用的方法中,它将您的布尔变量设置为 true。所以这些应该是两个独立的方法。这就是我没有得到的,也是我问这个问题的原因。
  • 您需要设置类变量来实现这一点
  • 哦,刷新页面后刚刚看到您的编辑,这与我接下来要问的内容非常接近 - 在我的编辑中。变量 'methodTrueOrFalse' 是不是必须声明它的类型,还是只是省略了?
  • 这看起来更接近你想要做的事情吗?
  • 是的。太近了,我可能会误以为你现在站在我身后。哈哈。感谢大家澄清这一点并提供详细的解释。
【解决方案2】:

不,您不能在另一个方法中定义方法,方法必须在您的类中单独定义,该代码将无法编译

【讨论】:

    【解决方案3】:

    不允许在 java 中嵌套方法。它会给出编译错误。如果您的要求需要从一个方法调用另一个方法,您可以在与private 相同的类中声明您的方法并调用它们。

    public class MethodNesting {
        public void method() {
            myinnerMethod();
        }
    
        private void myinnerMethod() {
            // Do Something
        }
    }
    

    如果您想了解更多信息,请查看此

    Can methods in java be nested and what is the effect?

    【讨论】:

      【解决方案4】:

      不,您不会将方法相互嵌套,而是将它们全部列在一个类中。但是,您可以在同一个类中从另一个方法调用一个方法。你已经做过很多次了,我猜。所以它看起来像:

      public class Something {
          public void methodOne() {
              // does something
          }
      
          public int methodTwo() {
              // does somethingElse
          }
      
          public void methodThree() {
              int variable = methodTwo();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-24
        • 2020-08-29
        相关资源
        最近更新 更多