Builder 注释了一个 private class?

Builder annotates a private class?

@Data
@Builder
public class ClassA {
    private ClassB b;
    private String createdBy;
    private class ClassB {
        String name;
        int version;
    }
}

你好,我想用这种方式在另一个 java 文件中创建 ClassA:

ClassA.builder().createdBy("Alex")
                .b(ClassB.builder()
                         .name("Game")
                         .version(2).build())
                .build();

私人 class classB 这可能吗?

感谢

我推荐如下:

@Data
@Builder
public class ClassA {
    private ClassB b;
    private String createdBy;
    @Builder
    @Data
    static class ClassB {
       String name;
       int version;
   }
}

如果你想要不可见的ClassB,那是不可能的。并且要在内部 class 上使用 @Builder , class 必须是静态的 class

private 修饰符表示该变量仅对此 class 可见。因此,如果您在 class A 中创建 private class B,则意味着 B 仅对 A 可见。

正如@sweeper 在评论中所说,您不能在另一个文件中使用 class B / class 除了 class A.

如果你还想用那种方式,你可以独立创建class B。

ClassA.class

@Data
@Builder
public class ClassA {
    private ClassB b;
    private String createdBy;
}

ClassB.class

@Data
@Builder
class ClassB {
    String name;
    int version;
}