私はここで、この本からの引用があり、「効果的なJavaの」読んでいます:
インターフェースは、おそらく、いくつかのデフォルトの方法を提供し、タイプを定義するスケルトン実装クラスが実装する一方プリミティブインタフェースメソッドの上に残存する非プリミティブインターフェース方法。スケルトン実装を拡張するインタフェースを実装のうち、ほとんどの作業を要します。これは、テンプレートメソッドパターン。
著者は、のようないくつかの抽象クラスについて話しているAbstractCollection
、AbstractSet
インターフェイスを実装し、いくつかの基本的な実装を提供するなど、。しかし、私は何を知っていないnon-primitive interface methods
とprimitive interface methods
されている引用符で述べました。私はJavaで、「プリミティブ型を」知っているが、「原始的な方法」とは?
この文脈では、「原始的な方法は、」プリミティブ型とは何の関係もありません- 「原始」の意味はここに異なっています。よる「Javaでメソッドのプロパティ」(P。3) 、ヘルプを他の方法に依存しない原始的な方法を実行する基本的なタスクは、その作業を行います。
原始的な方法は、通常、直接オブジェクトのフィールドを参照することにより、一つの特定のタスクを実行する方法です。これはプリミティブメソッドを定義するクラスのいずれか(非プリミティブ)の方法に依存しません。
これは、サブタスクを実行するために他のメソッドを呼び出すに依存している「合成方法」に反対しています。これはないか、または他の方法で表されるより小さなサブタスクに分解されるべきではない原始的方法を行うタスクと思われます。
例として、次のものがありTime
、時間と分を持つクラスを。原始的な方法は、時間と分のフィールドのそれぞれについて個別のセッター、例えばかもしれsetHour
とsetMinutes
。構成方法は、例えばsetTime
、呼び出すことができますsetHour
し、setMinutes
その作業を行うこと。
テンプレートメソッドパターンは、プリミティブとすることができる他のメソッドを呼び出し、行われるべきタスクのワークフローの順序及び構造を定義する構成方法を作成することを含みます。出現によりdefault
、これらの方法は、インタフェースであることは、Java 8のメソッド、それが可能です。