我有一个练习,问我们关于基本概念显然。但是我找不到任何信息,或者至少我不确定我应该搜索什么。所以我有一个小类,我需要注释3个不同的构造函数。它看起来像这样:
class Person{
private String name;
private ArrayList<String> pseudos;
private String email;
//For me this one isn't a problem, it initialize a name & a mail with the two parameters and I believe the tricky part is this Array. I'm not sure but as far as I know it's okay to initialize the Array whithout getting him through parameter... Maybe I'm wrong.
public Person(String aName, String aEmail){
name = aName;
pseudos = new ArrayList<String>();
email = aMail;
}
//It seems to be the same explanation than the first one.
public Person(){
pseudos = newArrayList<String>();
}
//Apart from the uppercase I thinks this one is good, nothing is wrong.
public Person(String aName, String aMail, ArrayList<String> manyPseudos){
name = aName;
pseudos = new ArrayList<String>();
if(pseudos != null)
{
Pseudos.addAll(manyPseudos); //The uppercase here should be the problem
}
mail = aMail;
}
}
当然,我试着通过我的课来弄清楚,但我没有找到任何东西,所以我认为这是一个基于逻辑的练习…但我缺乏这种逻辑,我真的想至少真正理解这部分,因为它是相当基础的,我将不得不操纵它很多。
再次感谢您的指导和您的时间。
我认为棘手的部分是这个数组。我不确定,但据我所知,这是可以初始化数组没有让他通过参数…也许我错了。
首先,pseudos
是ArrayList
,而不是数组。这是两码事。
第二,pseudos
和其他变量一样是一个变量。这意味着您可以用初始化任何变量的相同方式初始化它:从另一个变量的值或直接从表达式中初始化。这里我们通过直接创建一个新的ArrayList
来初始化pseudos
。
Pseudos.addAll (manyPseudos);//这里的大写字母应该是问题所在
你的眼睛很好。开头的Psuedos
应该改为pseudos
。因为Java是区分大小写的,所以这是两件不同的事情。我们通常使用这样的约定:类名以大写字母开头,变量和函数以小写字母开头。从理论上讲,你可以有一个名为Psuedos
的类和一个名为pseudos
的变量,但你必须在头脑中把它们分开。