Javaの関数型インターフェースのRunnableのサンプルです。
目次
サンプル | Runnableインターフェース |
クラスにRunnableインターフェースを実装する | |
例外が発生する場合 | |
匿名クラスでRunnableインターフェースを使用する |
Runnableインターフェース
インターフェース | public interface Runnable |
メソッド | void run() |
- Runnableは、入力と出力ともにありません。
- Runnableインターフェースを実装したクラスはrunメソッドをオーバーライドする必要があります
- マルチスレッドで使用されます。
- Runnableは走行可能という意味です。
- 以下は、OracleのJava8のRunnableインターフェースのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Runnable.html
関数型インターフェースのRunnableのサンプルです。
package test1;
public class Test1 {
public static void main(String[] args) {
Runnable make1 = () -> System.out.println("red");
Runnable make2 = () -> {System.out.println("blue");};
make1.run(); // red
make2.run(); // blue
}
}
importはしていません。java.langパッケージにあります。
6行目は、Runnableインターフェースを使用したラムダ式です。
7行目は、波括弧がついているパターンです。
9,10行目は、runメソッドで文字列を出力します。
クラスにRunnableインターフェースを実装する
package test1;
public class Test1 {
public static void main(String[] args) {
Make1 make1 = new Make1();
make1.run();
}
}
class Make1 implements Runnable {
@Override
public void run() {
System.out.println("red"); // red
}
}
7行目は、testメソッドです。引数と戻り値はありません。1回実行するのみです。
10行目は、Runnableインターフェースを実装しています。
例外が発生する場合
package test1;
public class Test1 {
public static void main(String[] args) {
Make1 make1 = new Make1();
try {
make1.run();
} catch (Exception e) {
System.out.println(e); //java.lang.ArithmeticException: / by zero
}
}
}
class Make1 implements Runnable {
@Override
public void run() {
try {
int num = 10 / 0;
} catch (Exception e) {
throw e;
}
System.out.println("red");
}
}
17行目は、0で割るため例外が発生します。
例外は、runメソッド内で処理するかthrowします。throwしない場合呼び出し元に戻りません。
匿名クラスでRunnableインターフェースを使用する
package test1;
public class Test1 {
public static void main(String[] args) {
new Runnable() {
@Override
public void run() {
System.out.println("red"); // red
}
}.run();
}
}
6行目は、匿名クラスです。クラス名はありません。
13行目は、runメソッドです。引数と戻り値はありません。
関連の記事
Java 関数型インターフェースのサンプル(Consumer)
Java 関数型インターフェースのサンプル(Supplier)
Java 関数型インターフェースのサンプル(Function)