在java中为类编写生成器时出现问题

在java中为类编写生成器时出现问题,java,class,builder,Java,Class,Builder,我在用java编写类生成器时遇到问题。它总是给我一个错误,说找不到符号 class Company { private String name; private String address; private String contact; private int sizeOfEmployee; private Date createdTime; @Override public String toString() {

我在用java编写类生成器时遇到问题。它总是给我一个错误,说找不到符号

class Company {
    private String name;
    private String address;
    private String contact;
    private int sizeOfEmployee;
    private Date createdTime;
  
    @Override
    public String toString() {
        return "Company{" +
                "name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", contact='" + contact + '\'' +
                ", sizeOfEmployee=" + sizeOfEmployee +
                ", createdTime=" + createdTime +
                '}';
    }
   
   public static class builder {
    private String name;
    private String address;
    private String contact;
    private int sizeOfEmployee;
    private Date createdTime;
    
    
   public builder Name (String name){
     this.name = name;
     return this;
   }
    public builder address(String address){
     this.address = address;
     return this;
   }
   
    public builder contact(String contact){
     this.contact = contact;
     return this;
   }
    public builder size(int sizeOfEmployee){
     this.sizeOfEmployee = sizeOfEmployee;
     return this;
   }
    public builder date(Date createdTime){
     this.createdTime = createdTime;
     return this;
   }
   
   }
   
     
}
我想写一个生成器,可以打印出我的公司类。谁能告诉我为什么我的建筑工人不工作?我搜索如何编写生成器并尝试复制该方法。但它在这里不起作用。它给我一个错误,说错误找不到符号。 如果我打电话

Company abc = Company.builder().name("abc").address("Virginia").createdTime(new Date()).sizeOfEmployee(300).contact("12345").build();
它会打印出来的

Company{name='abc', address='Virginia', contact='12345', sizeOfEmployee=300, createdTime=Wed Oct 21 11:50:41 EDT 2020}

您正在调用不存在的静态方法生成器“Company.builder()”。 您可以通过以下方式解决此问题:

public class Company {
    private String name;
    private String address;

    public static CompanyBuilder builder() {
        return new CompanyBuilder();
    }
    private static class CompanyBuilder {
        private final Company company = new Company();
        public CompanyBuilder name(String name){
            company.name = name;
            return this;
        }
        public CompanyBuilder address(String address){
            company.address = address;
            return this;
        }
        public Company build() {
            return company;
        }
    }
    public static void main(String[] args) {
        System.out.println(Company.builder().name("name").address("address").build());
    }
}
我建议将Lombok用于java项目。有了一个注解@Builder,包括Lombok插件和依赖项,您就可以解决这个问题,还可以使用许多特性来代替样板代码

import lombok.Builder;
import lombok.ToString;

@Builder
@ToString
public class Company {
    private String name;
    private String address;

    public static void main(String[] args) {
        System.out.println(Company.builder().name("name").address("address").build());
    }
}

您正在调用不存在的静态方法生成器“Company.builder()”。 您可以通过以下方式解决此问题:

public class Company {
    private String name;
    private String address;

    public static CompanyBuilder builder() {
        return new CompanyBuilder();
    }
    private static class CompanyBuilder {
        private final Company company = new Company();
        public CompanyBuilder name(String name){
            company.name = name;
            return this;
        }
        public CompanyBuilder address(String address){
            company.address = address;
            return this;
        }
        public Company build() {
            return company;
        }
    }
    public static void main(String[] args) {
        System.out.println(Company.builder().name("name").address("address").build());
    }
}
我建议将Lombok用于java项目。有了一个注解@Builder,包括Lombok插件和依赖项,您就可以解决这个问题,还可以使用许多特性来代替样板代码

import lombok.Builder;
import lombok.ToString;

@Builder
@ToString
public class Company {
    private String name;
    private String address;

    public static void main(String[] args) {
        System.out.println(Company.builder().name("name").address("address").build());
    }
}

假设不是输入错误,
public builder Name(…)
不是
builder.Name(“abc”)
。另外,
builder
类中的
build()
方法在哪里?旁白:应该使用Java标准(类——包括builder应该以大写字母开头,方法小写字母等等)。如果“public builder Name(…)”不是“builder.Name(abc)”,我可以问一下如何编写一个可以使用builder的方法。姓名(“abc”)。对于编码风格,我很抱歉。我是java新手,java是区分大小写的。在发布的代码中,您有
公共生成器名称(字符串名称)
作为方法。在本例中,您将显示
Company.builder.name(“abc”)…
。因此,您需要将
公共生成器名称(字符串名称)
更改为
公共生成器名称(字符串名称)
。明白了。谢谢,假设不是输入错误,
public builder Name(…)
不是
builder.Name(“abc”)
。另外,
builder
类中的
build()
方法在哪里?旁白:应该使用Java标准(类——包括builder应该以大写字母开头,方法小写字母等等)。如果“public builder Name(…)”不是“builder.Name(abc)”,我可以问一下如何编写一个可以使用builder的方法。姓名(“abc”)。对于编码风格,我很抱歉。我是java新手,java是区分大小写的。在发布的代码中,您有
公共生成器名称(字符串名称)
作为方法。在本例中,您将显示
Company.builder.name(“abc”)…
。因此,您需要将
公共生成器名称(字符串名称)
更改为
公共生成器名称(字符串名称)
。明白了。谢谢谢谢你,我现在就知道了!谢谢你,我现在明白了!