仅供参考,我就像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类中调用该方法?价值不变的功能势在必行,而且由于它们是可变的并且随着程序的变化而变化,我无法为它们赋予任何价值。
我知道这可能是一个超级基本的问题,但这就是我所处的水平,所以任何超级基本的答案都会有所帮助。不应该花太多时间。提前谢谢!
答案 0 :(得分:3)
在您的主要方法中,您的技能"如果要保留其值,则应传递对象。你每次正在做的是每次调用一个函数时创建一个新对象(构造一个)。
您想要的流程如下。
Skills skills = new Skills(...);
....
skills.toString();
就像你说的,如果你想在你的主类中的另一个方法中使用技能对象,只需将技能对象传递给该方法。像这样:
public static void main (String args[]) {
Skills skills = new Skills(....);
fooMethod(skills);
}
fooMethod(Skills skills) {
// Here you can :
skills.toString();
}
答案 1 :(得分:2)
将skills
声明为成员变量,通常称为字段(在main之外),然后像现在一样初始化它。然后,您可以使用skills. toString()
从班级中的任何方法访问它。
答案 2 :(得分:2)
Overload具有默认功能的构造函数。
public Skills() {
this (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
}
但是,如果Object本身不代表任何内容,并且仅为了访问toString方法而实例化,则应创建Static方法。可以通过调用类本身而不是对象来访问静态方法。虽然这很大程度上取决于您的预期目的。
public static toStaticString() {
return "Static String";
}
如果您想要始终保留Skills对象,则需要传递该对象并在其上调用方法。请记住,实例化技能会创建一个新的“实例”,它将记住属于它的每个技能的各种值。关于这一点。
注意:短语“实例化一个类”与“创建一个对象”意思相同。创建对象时,您正在创建类的“实例”,因此“实例化”一个类。 - Java Docs
答案 3 :(得分:0)
这是另一个答案,因为我没有看到有人发帖。
通常,为了解决许多不同的问题,已经创建了许多编程语言模式。
其中一个是Builder
模式,当有许多参数传递给构造函数时,它用作修复。现在,我不希望你感到困惑或者你指定的任何东西,你到目前为止只参加过1个Java课程,但是如果你想了解更多,你可以只使用谷歌“java builder模式”或者在你得到一段时间之后更熟悉Java,你可以通过 Joshua Bloch 阅读一本名为 Effective Java 2nd Edition 的好书,其中有一章Builder
模式和许多其他有用的东西你如果你选择编程生涯,最终会需要。