sat*_*ngh 27 java initialization object
是否可以直接初始化对象,就像我们在java中使用String类一样:
如:
String str="something...";
Run Code Online (Sandbox Code Playgroud)
我想为我的自定义类做同样的事情:
class MyData{
public String name;
public int age;
}
Run Code Online (Sandbox Code Playgroud)
是可能的
MyClass obj1={"name",24};
Run Code Online (Sandbox Code Playgroud)
要么
MyClass obj1="name",24;
Run Code Online (Sandbox Code Playgroud)
初始化对象?或者它是如何可能的!
Boh*_*ian 40
通常,您将使用构造函数,但您不必!
这是构造函数版本:
public class MyData {
private String name;
private int age;
public MyData(String name, int age) {
this.name = name;
this.age = age;
}
// getter/setter methods for your fields
}
Run Code Online (Sandbox Code Playgroud)
这是这样使用的:
MyData myData = new MyData("foo", 10);
Run Code Online (Sandbox Code Playgroud)
但是,如果您的字段是protected或者public,如您的示例中所示,您可以在不定义构造函数的情况下执行此操作.这是java中最接近你想要的方式:
// Adding special code for pedants showing the class without a constuctor
public class MyData {
public String name;
public int age;
}
// this is an "anonymous class"
MyData myData = new MyData() {
{
// this is an "initializer block", which executes on construction
name = "foo";
age = 10;
}
};
Run Code Online (Sandbox Code Playgroud)
瞧!
小智 5
如果您有班级人员:
public class Person {
private String lastName;
private String firstName;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
Run Code Online (Sandbox Code Playgroud)
您实际上可以创建一个新的Person对象,并使用以下命令初始化其firstName和lastName:
Person person = new Person(){{
setFirstName("My FirstName");
setLastName("MyLastName");
}}
Run Code Online (Sandbox Code Playgroud)
当使用Java代码而不是XML配置定义Spring Configuration时,经常会用到它。