2017-03-29 5 views
0

これは私の最初の質問です。 私はJavaの流暢なインターフェイスを使ってメールを実装する作業をしています。 フィールドが必要です:From、To、Subject。Javaの流暢なインターフェイスでメソッドポップを最初に作る方法は?

問題は、「From」を最初にしか表示できないということです。 例: MailBuilder builder = new MailBuilder(); ( "Stiliyan")。to( "Alexander")。件名( "ようこそ");

しかし、最初のドット "。"すべてが現れます。 ( "b")。)

ビルダー。(ここには "from"から "from"だけ出現する必要があります)。( "No worries")... 「

Here is MailBuilder.java

So here after "." must appear ONLY from method

+0

IDEは表示されていますか?または、テキストエディタを開発しましたか? IDEプラグインをプログラミングしている場合は、コード補完の提案について何かを調べる必要があります。 –

+0

これは単なるコンソールアプリケーションです。何も特別なものではなく、流暢なインターフェイスで使用するだけです。だから、私は仕事を終えると、Fromフィールドが最初と唯一の選択肢として現れなければならないと私に言った。 –

+0

@MarcosVasconcelos私はこのコードをpastebinに加えました。質問も編集しました。 –

答えて

2

その後ビルダーの各方法のご宣言戻り値の型は同じにすることはできませんあなたはまだたとえばかかわらず同じビルダーのインスタンスを返すことができます。

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("[email protected]").to("[email protected]").build(); 
    } 
} 
+0

Great Solution。 –

+0

@ Xinchaoあなたの答えは解決策としてマークしました。それは私をたくさん助けました。ありがとうございました ! –

+0

もう少し説明をお願いしたいと思います。私はすべてのコードを見直しましたが、最初から何が出てこないのか理解できません。 –

関連する問題