Foo foo = Foo.builder()
    .setColor(red)
    .setName("Fred")
    .setSize(42)
    .build();
Итак, я знаю, что для вызова именованных параметров при вызове метода существует следующее "Builder". Хотя, похоже, это работает только с внутренними статическими классами в качестве строителя или я ошибаюсь? Я взглянул на некоторые уроки для шаблона построения, но они кажутся очень сложными для того, что я пытаюсь сделать. Есть ли способ сохранить класс Foo и класс Builder отдельно, имея преимущество названных параметров, таких как код выше?
Ниже стандартной настройки:
public class Foo {
    public static class Builder {
        public Foo build() {
            return new Foo(this);
        }
        public Builder setSize(int size) {
            this.size = size;
            return this;
        }
        public Builder setColor(Color color) {
            this.color = color;
            return this;
        }
        public Builder setName(String name) {
            this.name = name;
            return this;
        }
        // you can set defaults for these here
        private int size;
        private Color color;
        private String name;
    }
    public static Builder builder() {
        return new Builder();
    }
    private Foo(Builder builder) {
        size = builder.size;
        color = builder.color;
        name = builder.name;
    }
    private final int size;
    private final Color color;
    private final String name;
}
