在不重置参数值的情况下引用构造函数?

时间:2017-12-28 19:06:47

标签: java methods constructor object

仅供参考,我就像Java上的一个高中班一样,所以这个问题应该非常容易回应。我很难找到一种方法来调用类方法(构造函数)作为新对象,而不需要为参数添加新值。构造函数如下所示:

    public Skills(int courage, int intelligence, int stamina, int crafting, 
    int blacksmithery, int herbalism, int slingSkill, 
    int bowSkill, int swordSkill, int armor, int stealth, int 
    lifeForceSkill){
        this.courage = courage;
        this.intelligence = intelligence;
        this.stamina = stamina;
        this.crafting = crafting;
        this.blacksmithery = blacksmithery;
        this.herbalism = herbalism;
        this.slingSkill = slingSkill;
        this.bowSkill = bowSkill;
        this.swordSkill = swordSkill;
        this.armor = armor;
        this.stealth = stealth;
        this.lifeForceSkill = lifeForceSkill;
}

当我建立它时,我的主要方法就是这样做:

    Skills skills = new Skills(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

要将所有级别设置为1,然后我将具有稍后使用的对象技能。 (我是否将构造函数和对象的术语混淆了?如果它错了,只需将它们全部转移到我的脑海中,我认为我至少与它保持一致)。

问题是我在Skills类中有一个toString()方法,我想在主类的一个单独方法中调用它。

    else if (optionChoice.equalsIgnoreCase("View Skills")){
        Skills skills = new Skills();
        System.out.println(skills.toString());
        break;
    }

当然我在这里创建的对象会抛出一个错误,因为我不能只写Skills();没有为参数添加所有十二个值。那么当我无法为它创建对象时,如何从Skills类中调用该方法?价值不变的功能势在必行,而且由于它们是可变的并且随着程序的变化而变化,我无法为它们赋予任何价值。

我知道这可能是一个超级基本的问题,但这就是我所处的水平,所以任何超级基本的答案都会有所帮助。不应该花太多时间。提前谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不将你的技能对象设为静态字段而不是在主方法中创建?

public class WhateverYourClassIsCalled {
    static Skills skills = new Skills(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

    public static void main(String[] args) {
        // ...
    }

    void yourOtherMethod() {
        // ...
        else if (optionChoice.equalsIgnoreCase("View Skills")) {
            System.out.println(skills.toString());
            break;
        }
    }
}