C#中有一种初始化对象的简便方法:
public class Car
{
public string brand{ get; set; }
public string color{ get; set; }
}
Car car = new Car {
brand = "BYD",
color = "白色"
};
不需要给相对应的构造方法,但是却可以随意设置成员变量的初始化参数,非常方便。
================================================================================================
Java中的类似写法:
public class User {
public String username; // 注意是public
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
@Test
public void test() {
// 用法1
User user = new User(){ // 注意这里一共是两个花括号!!!
{
username = "大头"; // public的属性可以直接赋值
// password = "123456"; // 这里直接写password会报错--'password' has private access 因为它是private的不能直接赋值
setPassword("654321"); // 私有的要通过setter赋值
}
};
System.out.println(user.toString()); // User{username='大头', password='654321'}
// 用法2
List<String> list = new ArrayList<String>() {
{
add("a");
add("b");
}
};
}
注意:
1.格式是 new xxx(){{}},需要写大括号,并且要写两个花括号。
2.public的成员变量才可以直接写,私有成员需要通过其setter方法设置