如何让方法在java 流畅界面中先弹出?
How to make a method pop first in java fluent interface?
这是我的第一个问题,如果我搞砸了,请见谅。
我的任务是使用 Java 流畅的界面来实现邮件。
我必须有以下字段:发件人、收件人、主题。
问题是,我无法让 "From" 出现在第一个且唯一的位置。
例子:
MailBuilder 生成器 = new MailBuilder();
builder.from("Stiliyan").to("Alexander").subject("Welcome aboard");
但是当我输入第一个点“.”时他们都出现了。 (例如 builder.to("a").from("b")..)
所以简而言之:建造者。(这里只能出现"from")。到("No worries")...“
So here after "." must appear ONLY from method
那么你的声明return每个构建器方法的类型不能相同。不过,您仍然可以 return 相同的构建器实例。例如:
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 流畅的界面来实现邮件。 我必须有以下字段:发件人、收件人、主题。
问题是,我无法让 "From" 出现在第一个且唯一的位置。 例子: MailBuilder 生成器 = new MailBuilder(); builder.from("Stiliyan").to("Alexander").subject("Welcome aboard");
但是当我输入第一个点“.”时他们都出现了。 (例如 builder.to("a").from("b")..)
所以简而言之:建造者。(这里只能出现"from")。到("No worries")...“
So here after "." must appear ONLY from method
那么你的声明return每个构建器方法的类型不能相同。不过,您仍然可以 return 相同的构建器实例。例如:
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();
}
}