直接在 java 中初始化对象

2022-09-01 03:44:34

是否可以像我们在java中使用String类那样直接初始化对象:

如:

String str="something...";

我想对我的自定义类执行相同的操作:

class MyData{
public String name;
public int age;
}

是可能的,就像

MyClass obj1={"name",24};

MyClass obj1="name",24;

初始化对象?或者它是如何可能的!


答案 1

通常,您会使用构造函数,但您不必这样做!

下面是构造函数版本:

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
}

它是这样使用的:

MyData myData = new MyData("foo", 10);


但是,如果您的字段是 或 ,如示例中所示,则可以在不定义构造函数的情况下执行此操作。这是Java中最接近你想要的方式:protectedpublic

// 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;
    }
};

瞧!


答案 2

如果您有班级人员:

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;
    }

}

您实际上可以创建一个新的 Person 对象,并使用以下各项初始化其 firstName 和 lastName:

 Person person = new Person(){{
     setFirstName("My FirstName");
     setLastName("MyLastName");
 }}

当使用Java代码而不是XML配置来定义Spring配置时,这很常见。