java - 如何使java流畅界面中的方法首先弹出?

标签 java interface field fluent

这是我第一次提问,如果我弄乱了一些东西,我很抱歉。 我有一个任务是使用 Java 流畅的接口(interface)来实现邮件。 我必须有字段:发件人、收件人、主题。

问题是,我无法让“From”作为第一个且唯一的出现。 例子: MailBuilder 构建器 = new MailBuilder(); builder.from("Stiliyan").to("Alexander").subject("欢迎加入");

但是当我输入第一个点“.”时他们都出现了。 (例如 builder.to("a").from("b")..)

简而言之:builder.(此处必须仅出现“from”).to(“无忧”)...”

Here is MailBuilder.java

So here after "." must appear ONLY from method

最佳答案

那么每个构建器方法的声明返回类型不能相同。不过,您仍然可以返回相同的构建器实例。例如:

interface IFromBuilder {
    IToBuilder from(String from);
}

interface IToBuilder {
    IMailBuilder to(String to);
}

interface IMailBuilder {
    Mail build();
}

class MailBuilder implements IFromBuilder, IToBuilder, IMailBuilder {

    private String from;
    private String to;

    @Override
    public IToBuilder from(String from) {
        this.from = from;
        return this;
    }

    @Override
    public IMailBuilder to(String to) {
        this.to = to;
        return this;
    }

    @Override
    public Mail build() {
        return new Mail(from, to);
    }
}

class Mail {
    private final String from;
    private final String to;

    public Mail(String from, String to) {
        this.from = from;
        this.to = to;
    }

    public static IFromBuilder newBuilder() {
        return new MailBuilder();
    }
}


public class Demo {
    public static void main(String[] args) {
        Mail mail = Mail.newBuilder().from("sender@a.com").to("receiver@b.com").build();
    }
}

关于java - 如何使java流畅界面中的方法首先弹出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43099774/

相关文章:

java - 在二维数组中查找可用的 "number"

java - 如何使用在 Java 上运行的 Google App Engine 将批量数据上传到 Google 服务器?

c++ - 抽象类作为接口(interface),没有 vtable

Java:加载用户定义的接口(interface)实现(来自配置文件)

java - Java如何判断接口(interface)是否不一致?

html - 如何避免发送被显示 :none to a server? 隐藏的输入字段

Windows 上的 Java/MongoDB 消息长度错误,但 Linux 上没有

java - 如何访问 Thymeleaf 模板中的系统属性?

php - SQL 更新后,字段设置为 0 [PHP/MySQL]

python - 如何从子类中的父表单中删除字段?