【问题标题】:How to invoke a variable of another class.如何调用另一个类的变量。
【发布时间】:2013-01-26 22:07:49
【问题描述】:

我在调用另一个类的变量时遇到问题。假设我们有 class1 和 class2,而 class2 有一个类似的方法:

public Class2{

public void method2 (Element ele, Grammar utterance, String user) {

String speech =................ 

         }
   }

我的目的是获取这个“语音”变量并将其传递给 class1。关于如何做到这一点的任何想法?

【问题讨论】:

    标签: class variables methods call invoke


    【解决方案1】:

    您可以将 void method2(...) 更改为 public String method2(...) 并返回语音。然后在您的第一堂课中,您有一个 class2 的实例,调用 class2.method2(...) 将为类 1 提供语音变量

    【讨论】:

    • 但问题是我不允许在当前代码中更改任何内容(例如从 void 到 public),我只能添加 sth。因为当我更改 sth 时,很多代码都会受此影响,我需要一个不修改代码只增加几行代码的解决方案!!!
    【解决方案2】:

    你只需要在你的另一个 Class1 中有一个 Class2 的实例,所以例子是:

    Class1 mySpeech = new Class1();
    

    现在可以访问mySpeech 的对象可以访问作为语音包含的字符串变量是一个公共变量。

    mySpeech.speech
    

    但最好为此创建 getter/setter 方法,这些方法可以使用 eclipse 快捷方式创建:

    Sources->Generate Getters and Setters
    

    在命名一个类时,第一个字母使用大写并调用骆驼大小写约定。因此,当你命名一个类时,将其命名为Class1ClassOne

    【讨论】:

      【解决方案3】:

      您必须在提供字符串的对象中具有某种公共可见性。然后将字符串从第一个对象传递给第二个对象,或者通过引用将对象传递给第二个对象(不太推荐)。

      public FirstClass {
          private String speech = "I am the first object!";
      
          public String getSpeech() {
              return speech;
          }
      }
      
      public SecondClass {
          private string speechCopy;
      
          public void takeSpeech(string speechCopy) {
              this.speechCopy = speechCopy + " (not really, I'm a copy!)";
          }
      }
      

      从这里,您只需调用方法来调用您想要的行为。您可以保留代码原样,但将 get/set 方法添加到每个对象,以便它们可以传递变量和引用。

      【讨论】:

      • 但问题是我不允许在当前代码中更改任何内容(例如,从 void 到 public 或你对 private 所做的)我只能添加 sth。因为当我更改 sth 然后所以许多代码都受此影响,我需要一个不修改代码而只添加一些代码行的解决方案!!!而这个字符串语音是在 class2 的方法中定义的,所以它是一个局部变量,我不知道如何访问它......
      • 我提供的解决方案是通用的。鉴于您提供的代码,您仍然可以向返回字符串值的对象添加一个方法,而无需向现有代码添加任何内容。对于您的示例,将 getSpeech() 方法添加到您的类 2 中,并且只需“返回语音;”在方法内部。
      【解决方案4】:

      -在方法之前声明:公共静态字符串语音 - 初始化方法或输出:speech="hi" -从其他类调用(静态范围):Class1.speech

      【讨论】:

      • 但问题是我不允许在当前代码中更改任何内容(例如,从 void 到 public 或您将其设为静态)我只能添加 sth。因为当我更改 sth 然后如此多的代码受到此影响,我需要一个不修改代码而只添加一些代码行的解决方案!!!而这个字符串语音是在 class2 的方法中定义的,所以它是一个局部变量,我不知道如何访问它......
      • 顺便说一句,当我按照你说的那样做时,它工作得很好,非常感谢,但我不确定我是否被要求通过对代码的一些修改来找到结果!!!
      • 您也可以返回语音值(字符串)而不是 void 或将语音作为方法参数传递
      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2018-04-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多