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

MyMemoWiki

「Java SE 8 関数インターフェース」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==Java SE 8 関数インターフェース== [Java SE 8] *http://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.8 *関数インターフェースは、…」)
 
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
==Java SE 8 関数インターフェース==
+
==[[Java SE 8 関数インターフェース]]==
[Java SE 8]
+
[[Java SE 8]] |
  
 
*http://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.8
 
*http://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.8
11行目: 11行目:
 
===例===
 
===例===
 
====簡単な関数インターフェースの例====
 
====簡単な関数インターフェースの例====
  interface Runnable {
+
  interface [[R]]unnable {
 
   void run();
 
   void run();
 
  }
 
  }
22行目: 22行目:
 
   int compare(String o1, String o2);
 
   int compare(String o1, String o2);
 
  }
 
  }
=====同様に、java.util.Comparator<T> は一つの抽象メソッドをもち、かつObjectのメソッドではないため、関数インターフェースとなる。=====
+
=====同様に、java.util.Comparator&lt;T&gt; は一つの抽象メソッドをもち、かつObjectのメソッドではないため、関数インターフェースとなる。=====
  interface Comparator<T> {
+
  interface Comparator&lt;T&gt; {
 
   boolean equals(Object obj);
 
   boolean equals(Object obj);
 
   int compare(T o1, T o2);
 
   int compare(T o1, T o2);

2020年2月16日 (日) 04:27時点における最新版

Java SE 8 関数インターフェース

Java SE 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();
}