Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 如何调用另一个类的变量。_Class_Variables_Methods_Call_Invoke - Fatal编程技术网

Class 如何调用另一个类的变量。

Class 如何调用另一个类的变量。,class,variables,methods,call,invoke,Class,Variables,Methods,Call,Invoke,我在调用另一个类的变量时遇到问题。假设我们有class1和class2,class2有如下方法: public Class2{ public void method2 (Element ele, Grammar utterance, String user) { String speech =................ } } 我的目的是获取这个“speech”变量并将其传递给class1。有没有关于如何执行此操作的想法?您可以将void method2(

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

public Class2{

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

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

         }
   }

我的目的是获取这个“speech”变量并将其传递给class1。有没有关于如何执行此操作的想法?

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

您只需要在另一个类中有一个class2实例,因此示例如下:

Class1 mySpeech = new Class1();
现在,可以访问
mySpeech
的对象可以访问包含在speech中的字符串变量,因为speech是一个公共变量

mySpeech.speech
但是,最好为此创建getter/setter方法,可以使用eclipse快捷方式创建:

Sources->Generate Getters and Setters

此外,在命名类时,使用大写字母作为第一个字母,并调用驼峰式大小写约定。因此,当命名类时,将其命名为
Class1
ClassOne

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


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

-Declare before-method:public-static String-speech -在方法内或方法外初始化:speech=“hi”
-来自另一个类的调用(静态范围):Class1.speech

但问题是我不允许在当前代码中更改任何内容(如从void更改为public),我只能添加一些内容。因为当我更改一些内容时,会有太多代码受到影响,我需要一个解决方案,该解决方案不会修改代码,而只添加一些代码行!!!但问题是我不允许在当前代码中更改任何内容(例如从void改为public或像你对private所做的那样),我只能添加一些内容。因为当我更改一些内容时,很多代码都会因此生效,我需要一个不修改代码但只添加一些代码行的解决方案!!!这个字符串语音是在class2的一个方法中定义的,所以它是一个局部变量,我不知道如何达到它…我提供的解决方案是通用的。给定您提供的代码,您仍然可以向对象添加返回字符串值的方法,而无需向现有代码添加任何内容。对于您的示例,将getSpeech()方法添加到类2中,只需使用“returnspeech;”在方法内部。但问题是我不允许在当前代码中更改任何内容(例如从void更改为public或使其成为静态),我只能添加一些内容。因为当我更改一些内容时,那么多代码都会受到影响,我需要一个解决方案,该解决方案不修改代码,只添加一些代码行!!!这个字符串语音是在class2的一个方法中定义的,所以它是一个局部变量,我不知道如何达到它…顺便说一句,当我按照你说的那样做时,它工作得很好,非常感谢,但我不确定我是否被要求在代码上做一些修改后找到结果!!!您还可以返回语音值(字符串),而不是void或将语音作为方法参数传递
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!)";
    }
}