| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
ページの作成:「==Java SE 8 関数インターフェース== [Java SE 8] *http://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.8 *関数インターフェースは、…」
==Java SE 8 関数インターフェース==
[Java SE 8]

*http://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.8

*関数インターフェースは、ただ一つの抽象メソッド(オブジェクトから継承するメソッドはさておいて)を持ったインターフェース
*一つの関数契約を表現する
*この「一つ」のメソッドは、複数の抽象メソッドを、スーパーインターフェースから継承されたオーバーライド同等のシグネチャをともなって形成する。
*この例では、継承されたメソッドは論理的に一つのメソッドを表現する。

===例===
====簡単な関数インターフェースの例====
interface Runnable {
void run();
}
=====以下は、関数インターフェースではない。Objectのメンバーであってはいけない。=====
interface NonFunc {
boolean equals(Object obj);
}
=====しかしながら、上記を継承したサブインターフェースは関数インターフェースとなる。 宣言された抽象メソッドは、Objectのメンバーではない。=====
interface Func extends NotFunc {
int compare(String o1, String o2);
}
=====同様に、java.util.Comparator<T> は一つの抽象メソッドをもち、かつObjectのメソッドではないため、関数インターフェースとなる。=====
interface Comparator<T> {
boolean equals(Object obj);
int compare(T o1, T o2);
}
=====次のインターフェースは関数インターフェースではない。一つの抽象メソッドをもち、それはObjectのメンバーではないが、Objectのメンバーではない、2つのpublicな抽象メソッドをもつ。=====
interface Foo {
int m();
Object clone();
}

案内メニュー