英文:
Class constructor call with class as input
问题
我正在处理一个类,并且通过将其作为输入调用了该类。
professor = new Professor(EEEE, AAAA, YEARS_90, DEP);
depProf.addProfessor(professor)
Professor类有一个构造函数为 (String, String, Integer, String),但是在测试中,我想从另一个地方使用 (Professor) 作为输入来调用它。
public Professor(String name, String surname, Integer yearOfBirth, String department) {
    this.department = department;
    Person curPerson = new Person(name, surname, yearOfBirth);
}
我如何创建一个接受 (Professor) 作为输入的 Professor 构造函数?如果这有任何意义的话。
我在考虑在调用第二个构造函数时调用第一个构造函数,但实际上不知道如何使其工作。
英文:
I'm working with a class and getting a call to this class with it as input.
 professor = new Professor(EEEE, AAAA, YEARS_90, DEP);
 depProf.addProfessor(professor)
Professor has a constructor of (String, String, Integer, String), but in a test I want to call it from another place with (Professor) as input.
public Professor(String name, String surname, Integer yearOfBirth, String department) {
    this.department = department;
    Person curPerson = new Person(name, surname, yearOfBirth);
}
How can I make a constructor of Professor(Professor)? If that make any sense.
I'm thinking about calling 1st constructor when second is called but don't actually know how to make it work.
答案1
得分: 5
你可以在同一个类中调用另一个构造函数,例如:
public Professor(String name, String surname, Integer yearOfBirth) {
   this.name = name;
   this.surname = surname;
   this.yearOfBirth = yearOfBirth;
}
public Professor(String name, String surname, Integer yearOfBirth, String department) {
  this(name, surname, yearOfBirth);
  this.department = department;
}
public Professor(Professor p) {
  this(p.name, p.surname, p.yearOfBirth, p.department);
}
英文:
You can call another constructor in the same class for example:
public Professor(String name, String surname, Integer yearOfBirth) {
   this.name = name;
   this.surname = surname;
   this.yearOfBirth = yearOfBirth;
}
public Professor(String name, String surname, Integer yearOfBirth, String department) {
  this(name, surname, yearOfBirth);
  this.department = department;
}
public Professor(Professor p) {
  this(p.name, p.surname, p.yearOfBirth, p.department);
}
答案2
得分: 1
你可以使用 this 来调用另一个构造函数。
public Professor(Professor professor) {
    this(professor.name, professor.surname, professor.yearOfBirth, professor.department);
}
英文:
You can use this to call another constructor.
public Professor(Professor professor) {
    this(professor.name, professor.surname, professor.yearOfBirth, professor.department);
}
答案3
得分: 0
如果我理解正确,您正在尝试使用复制构造函数。在C++中,这个构造函数会被默认生成,但是在Java中,您需要在您的Professor类中手动实现一个:
public Professor(Professor p) { 
    this(p.name, p.surname, p.yearOfBirth, p.department);
}
英文:
If I get this right, you are trying to use a copy constructor. This constructor is generated by default in C++, but you have to manually implement one in Java, in your Professor class :
public Professor(Professor p) { 
    this(p.name, p.surname, p.yearOfBirth, p.department);
} 
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论