[在Android Studio中,我创建了Person.java类。我使用Generate来创建getter和setter以及构造函数。
这是我的Person.java类:
public class Person {
private int id;
private String firstName;
private String lastName;
private String email;
public User(int id, String firstName, String lastName, String email) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public void setId(int Id) {
this.Id = Id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
我可以/应该将构造函数更改为此:
public Person(int Id, String firstName, String lastName, String email) {
this.setId(Id);
this.setFirstName(firstName);
this.setLastName(lastName);
this.setEmail(email);
}
[自动生成的还是我更改为的会更好?运行时会有所改进吗?
我对PHP(7.4)类也有同样的问题。
提前感谢!
这是优先事项。但是,使用自动生成的样式的好处是它不需要设置器。您将不会获得任何性能改进。
Java编译器通常会优化很多东西,因此最终无论如何代码都可能会转换为第二个示例,因为方法调用通常比直接设置值更糟糕。
在您的示例中,它实际上没有任何区别,我只保留第一个,因为您可以在生成它时保留它。即使第二种选择的效果更好,其好处还是太小而无法引起人们注意。
真正调用构造函数中的setter的唯一原因是它们内部是否具有逻辑,在这种情况下,您可以检查电子邮件是否为真实电子邮件。然后最好在构造函数中调用setEmail(email)
,因为该方法包含不应放入构造函数的逻辑(而且在构造函数和setter中进行检查将是不必要的代码重复)]
[在进行Android编程时,您也可以查看Kotlin,它看起来像这样:
data class User(val id:Int, var firstName:String, var lastName:String, var email:String)
这将替换您编写的整个类,您不需要设置器,因为可以在需要时选择定义它们。