LoginSignup
0
0

関数型インターフェース、ラムダ式②(Java Silver)

Last updated at Posted at 2024-01-06

最初に

この記事は、以下の書籍を通じてJava silverの合格に向けて自分が学んだ内容を体系的にアウトプットする記事である。(目指せ年始合格!)
徹底攻略Java SE 11 Silver問題集[1Z0-815]対応

勉強記録

ラムダ式

省略ルール

省略部分 省略の条件
引数の型 省略する場合は、全引数の型を省略する
引数の() 引数が1つの時のみ省略可能
メソッドの{} 処理が一文の時のみ省略可能。戻り値がある場合、returnの省略とセット
return メソッドの{}の省略とセット

ラムダ式の外で宣言されたローカル変数にアクセスする場合

  • 実質的にfinalな変数(finalで修飾されていなくても変更されない変数)にしかアクセスできない。

    • NG例①
    public class Test{
    	public static void main(String[] args){
    		String val = "hello world";
    		Function f = () -> {
    			//コンパイルエラー
    			val = "hello Japan";
    			System.out.println(val);
    		}
    		f.test();
    	}
    }
    
    • NG例②
    public class Test{
    	public static void main(String[] args){
    		String val = "hello world";
    		Function f = () -> {
    			System.out.println(val);
    		}
            //コンパイルエラー
    		val = "hello Japan";
    		f.test();
    	}
    }
    
  • 参照型変数の場合、変数が指すインスタンスを変えなければ、中身は変えてOK

import java.util.function.Consumer;

class LambdaTest {
    public static void main(String[] args) {
        final int[] i = {0, 1, 2};
        System.out.println(i[1]); // → 1

        Consumer<?> consumer = x -> {
            i[1] = 256;
        };
        consumer.accept(null);

        System.out.println(i[1]); // → 256!
    }
}

感想

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0