当前位置: 首页 > 知识库问答 >
问题:

将变量传递给一个子类

司徒修能
2023-03-14

我是一个非程序员,有非常少的代码接触,但我想修改一个现有的代码库。我大大简化了下面的代码。请让我知道,如果我可以提供任何进一步的信息或如果这是没有意义的所有!Vocab很难。:)

public class ClassA {
    private String myVar = "hi";
    private String myStuff = "bye";
    private int myOption = 1;

    private String getMyClass(String myStuff) throws Exception {
        final MyClassChoice myClass = getMyClassChoice(myOption);
        return myClass.getResponse(myStuff);
    }

    private MyClassChoice getMyClassChoice(myOption) {
        switch(myOption) {
            case 1:
                return new ClassC();
            case 2:
                return new ClassD();    
        }
    }
}
public class ClassB {
    public abstract String getResponse(String myStuff) throws IOException;
}
public class ClassC extends ClassB {
    // do stuff with myStuff
    // do stuff with myVar
}

ClassD:

public class ClassD extends ClassB {
    // do stuff with myStuff
}

共有1个答案

鲜于峰
2023-03-14

您可以在实例化对象时将其传递给构造函数并将其保存在实例变量中,

public class ClassA {
// ...
    private MyClassChoice getMyClassChoice(myOption) {
        switch(myOption) {
            case 1:
                return new ClassC(myVar);
            case 2:
                return new ClassD();    
        }
    }
}

public final class ClassC extends ClassB {

    private String myVar;

    // constructor:
    public ClassC(String myVar) {
        this.myVar = myVar;
    }

    // do stuff with myStuff
    // do stuff with myVar
    private void doStuff() {
        System.out.println(myVar);
    }
}

或者在使用该方法时将其传递给该方法,

public final class ClassA {
// ...
    public void someMethodUsingClassCDoStuff() {
        myClass.doStuff(myVar);
    }
}

public final class ClassC extends ClassB {

    // do stuff with myStuff
    // do stuff with myVar
    public void doStuff(String myVar) {
        System.out.println(myVar);
    }
}
 类似资料:
  • 问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。

  • 我有这样的代码。 @RequestMapping(Value=“/Persons”,Method=RequestMethod.Post)public@ResponseBody String addUser(@RequestParam String name){ 谢谢...

  • 问题内容: 我刚开始使用快速语言,并且知道这个问题是重复的。我发现了几个类似的问题和答案,但我无法弄清这个问题。 我想将ScandString变量的值从ScanViewController传递给ResultViewController。 ScanViewcontroller如下: ResultViewController如下: println(detectedString)没有给我任何结果。问题是

  • 问题内容: 可以说我有一个SP,其语句如下: 但是数据必须通过包含值字符串的单个变量到达该子句。以下内容链接 但是它不能那样工作。任何想法如何做到这一点? 问题答案: 像这样传递参数值- 。然后,使用FIND_IN_SET函数就足够了-

  • 问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。

  • 问题内容: 我正在使用shell_exec方法从PHP调用test.sh。 但是,命令行脚本说它仅收到1个参数:/tmp/my_script.php 当我将呼叫更改为: 码: 它说它收到了3个参数,但是argv [1]和argv [2]为空。 当我将呼叫更改为: 码: 脚本最终将按预期接收所有3个参数。 您是否始终需要使用脚本发送仅带引号的文本,并且不允许发送$ var这样的变量?还是有一些特殊的