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

Java如果需要从构造函数中传递变量,如何声明另一个类的实例变量

金赤岩
2023-03-14

我想创建一个类的实例,该类的构造函数需要货币,但是我将货币传递到我创建它们的类的构造函数中。

public class Owner_Class {
    
    
    

    Controller items = new Controller();
    private Item[][] list = items.getItemList();
    private String currency;
    private coinCollector dispenser = new coinCollector(currency);
    public Owner_Class(String currency) {
        this.currency = currency;

    }

每当我运行这个时,货币都是空的。到底是有什么办法,还是我需要改变它的工作方式

共有1个答案

史淇
2023-03-14

只是将初始化转移到构造函数。Java首先运行所有“初始化表达式”,然后运行构造函数。因此,在您当前的代码片段中,currencynull开头,然后执行new coinCollector(currency)(因此,传递null),然后您的构造函数运行并设置currency——太晚了。

因此:

public class Owner_Class {
    Controller items = new Controller();
    private Item[][] list = items.getItemList();
    private Scanner input = new Scanner(System.in);
    private String currency;
    private coinCollector dispenser;

    public Owner_Class(String currency) {
        this.currency = currency;
        this.dispenser = new coinCollector(currency);
    }
}
 类似资料:
  • 如何在百里叶中使用另一个变量来声明一个变量?这就是我想做的: 但是编译器不喜欢 : EL1041E:(pos 1):解析有效表达式后,表达式中还有更多数据:“lcurly({)” (组织.thymeleaf.exceptions.template处理异常: 异常计算 SpringEL 表达式: “${ccc} == null ? '' : ${ccc}” (自定义:24))

  • 问题内容: 我有两个 newAccessLevels.java ,它有两个按钮“ Level 1”,“ Level 2”和 newAccessPanel.java。 我需要获取用户选择“ 1或2”的级别,以便可以在标题中显示它。 accessPanel.java, 例如访问级别1,访问级别2。如何完成此操作。下面是示例代码,因此,如果单击级别1,则将打开标题为* ACCESS LEVEL 1 的n

  • 问题内容: 这两种方法有什么优势吗? 范例1: 范例2: 问题答案: 没有区别-实例变量初始化实际上是由编译器放入构造函数中的。 第一种变体更具可读性。 你不能使用第一个变体进行异常处理。 另外还有初始化块,编译器也将其放在构造函数中: 但是,字段声明不是任何方法的一部分,因此它们不能像语句那样执行。相反,Java编译器会自动生成实例字段初始化代码,并将其放入该类的一个或多个构造函数中。初始化代码

  • 问题内容: 我有以下内容: 然后在我的Android活动中,我将这样称呼: 然后我打电话给。但是,我希望不要对其进行硬编码,因此可以将其传递。否则,对于要打印的每个String,我都必须具有这些声明之一。 (这实际上是一个Android问题,但将其简化为基本Java,因此更易于回答) 谢谢 问题答案: final String hello = whereverItsComingFrom; Runn

  • 问题内容: 是否可以从Java中的另一个类访问一个类中变量的实例。 假设您在A类中具有以下条件: 我想对此类中的队列进行更改,然后可以使用它从另一个类中对其进行访问。 我如何从另一个类访问缓冲区的实例?可能吗? 问题答案: 添加吸气剂: 然后,如果您有Whatever的实例:

  • 我知道这个话题听起来像是重复的,但我并不是想在这里调试这个问题,而是想绕过它。 我的程序应该做的是:对于文件夹中的每个文件,创建一个新按钮。如果您单击此按钮,请输入您刚输入的文件夹的名称。 现在我遇到的问题是,“fileName”变量需要放在final中,因为Java提供的是对象的指针,而不是值本身。但如果我这样做,则只会为任何按钮发送最后选择的文件名。