有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在同一行上实例化对象和调用setter?

如果我有一个带有默认构造函数的Employee类:

private String firstName;
public Employee(){}

还有一个二传手:

public void setFirstName(String firstName){
    this.firstName = firstName;
}

为什么这一尝试未能在同一行中实例化和调用setter

Employee employee = new Employee().setFirstName("John");

共 (3) 个答案

  1. # 1 楼答案

    应该是这样的:

    Employee employee = new Employee();
    employee.setFirstName("John");
    
  2. # 2 楼答案

    因为setFirstName不返回任何内容。如果要链接方法,那么setFirstName必须返回Employee

    另一种方法是使用以firstName为参数的构造函数

  3. # 3 楼答案

    虽然这有点过头了,但您可以尝试使用builder pattern

    public class Employee{
        private String firstName;
    
        public static class Builder{
            private String firstName;
    
            public Builder firstName(String firstName){
                this.firstName = firstName;
                return this;
            }
    
            public Employee build(){
                return new Employee(this);
            }
        }
    
        private Employee(Builder builder){
            firstName = builder.firstName;
        }
    }
    

    然后你可以做以下事情

    Employee e = new Employee.Builder().firstName("John").build();