我需要在方法中填充一些Java业务或实体对象。
User user = new User();
user.setFirstName();
user.setLastName();
user.setCountry();
user.setLanguage();
user.setStreet();
user.setHouseNumber();
user.setTown();
user.setUserName();
有没有办法自动生成这些setter? 我已经有了getter / setter这个对象,现在我需要创建这个实例。 需要一个解决方案来进行方法调用,而不是对象创建。
我使用的是eclipse IDE。类似的东西:
User user = new User();
右键单击 - >添加来源 - >添加所有setter(ALT + CTRL + exotic-key-combination) 还是另一种方式?
只是说这会给我很多密谋代码。
答案 0 :(得分:2)
我个人建议Project Lombock生成getter / setter。
它还可以生成equals
,hashCode
和toString
。
它使用注释处理器在编译时生成代码,这样就不会使类混乱。
这是一个简单的课程:
public class Example {
private String firstName;
private String lastName;
}
使用getter,setter,equals和hashCode变为:
public class Example {
private String firstName;
private String lastName;
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;
}
@Override
public int hashCode() {
int hash = 3;
hash = 67 * hash + Objects.hashCode(this.firstName);
hash = 67 * hash + Objects.hashCode(this.lastName);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Example other = (Example) obj;
if (!Objects.equals(this.firstName, other.firstName)) {
return false;
}
if (!Objects.equals(this.lastName, other.lastName)) {
return false;
}
return true;
}
}
这是一个正确的混乱。使用Lombock,可以这样做:
@Data
public class Example {
private String firstName;
private String lastName;
}
如果我们反编译已编译的类,我们得到:
public class Example {
public Example() {
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Example)) {
return false;
}
Example other = (Example) o;
if (!other.canEqual(this)) {
return false;
}
Object this$firstName = getFirstName();
Object other$firstName = other.getFirstName();
if (this$firstName != null ? !this$firstName.equals(other$firstName) : other$firstName != null) {
return false;
}
Object this$lastName = getLastName();
Object other$lastName = other.getLastName();
return this$lastName != null ? this$lastName.equals(other$lastName) : other$lastName == null;
}
public boolean canEqual(Object other) {
return other instanceof Example;
}
public int hashCode() {
int PRIME = 31;
int result = 1;
Object $firstName = getFirstName();
result = result * 31 + ($firstName != null ? $firstName.hashCode() : 0);
Object $lastName = getLastName();
result = result * 31 + ($lastName != null ? $lastName.hashCode() : 0);
return result;
}
public String toString() {
return (new StringBuilder()).append("Example(firstName=").append(getFirstName()).append(", lastName=").append(getLastName()).append(")").toString();
}
private String firstName;
private String lastName;
}
所有代码都在那里,包括toString
。
答案 1 :(得分:-1)
有Project Lombok。使用此方法,您可以使用@Data注释您的类,库将生成getter和setter。