【Java】ラムティー②
[クラスメンバーとローカル変数の使用]
ラムダ式の実行ブロックは、クラスのメンバー(フィールドおよびメソッド)およびローカル変数を使用することができる.
クラスのメンバーはコンストレイントされませんが、ローカル変数はコンストレイントされます.
1.クラスのメンバーの使用
ラムダ式実行ブロックは、クラスメンバーフィールドおよびメソッドに制限されない.ただし一般的に匿名対象内部にある ラムダ式中 ✔¥例
次の例では、ram式から外部オブジェクトとネストされたオブジェクトの参照を取得し、フィールド値を出力する方法を示します.
ネスト対象運転結果
ラムダ式は主にメソッド内部で記述されるため,ローカル匿名実装オブジェクトを生成するものと考えられる.ラムダ式では、外部クラスのフィールドやメソッドは制限なく使用できるが、メソッドのパラメータやローカル変数を使用する場合、これら2つの変数は
✔¥例運転結果
これはジャワの本です.
ラムダ式の実行ブロックは、クラスのメンバー(フィールドおよびメソッド)およびローカル変数を使用することができる.
クラスのメンバーはコンストレイントされませんが、ローカル変数はコンストレイントされます.
1.クラスのメンバーの使用
ラムダ式実行ブロックは、クラスメンバーフィールドおよびメソッドに制限されない.ただし
this
キーワードを使うときは注意が必要です.this
匿名対象の参照であるthis
内部生成の匿名オブジェクトの参照ではなく、ラムダ式を実行するオブジェクトの参照.次の例では、ram式から外部オブジェクトとネストされたオブジェクトの参照を取得し、フィールド値を出力する方法を示します.
ネスト対象
Inner
でラムティーが実行されたためラムティー内部this
ネスト対象Inner
MyFunctionalInterface
(関数インタフェース)@FunctionalInterface
public interface MyFunctionalInterface {
public void method();
}
UsingThis.java
(this
使用)public class UsingThis {
public int outterField = 10;
class Inner {
int innerField = 20;
void method() {
//람다식
MyFunctionalInterface fi = () -> {
System.out.println("outterField: " + outterField);
System.out.println("outterField: " + UsingThis.this.outterField + "\n");
System.out.println("innerField: " + innerField);
System.out.println("innerField: " + this.innerField + "\n");
};
fi.method();
}
}
}
UsingThisExample
(実行クラス)public class UsingThisExample {
public static void main(String[] args) {
UsingThis usingThis = new UsingThis();
UsingThis.Inner inner = usingThis.new Inner();
inner.method();
}
}
outterField: 10
outterField: 10
innerField: 20
innerField: 20
2.ローカル変数の使用ラムダ式は主にメソッド内部で記述されるため,ローカル匿名実装オブジェクトを生成するものと考えられる.ラムダ式では、外部クラスのフィールドやメソッドは制限なく使用できるが、メソッドのパラメータやローカル変数を使用する場合、これら2つの変数は
final
特性を持たなければならない.したがって、ramda式からパラメータまたはローカル変数を読み込むことはできますが、ramda式の内部または外部で変更することはできません.✔¥例
MyFunctionalInterface
(関数インタフェース)@FunctionalInterface
public interface MyFunctionalInterface {
public void method();
}
UsingLocalVariable
(Final
特性を持つローカル変数)public class UsingLocalVariable {
void method(int arg) { //arg는 final 특성을 가짐
int localVar = 40; //localVar는 final 특성을 가짐
//arg = 31; //final 특성 때문에 수정 불가
//localVar = 41; //final 특성 때문에 수정 불가
//람다식
MyFunctionalInterface fi = () -> {
//로컬 변수 읽기
System.out.println("arg: " + arg);
System.out.println("localVar: " + localVar + "\n");
};
fi.method();
}
}
UsingLocalVariableExample
(実行クラス)public class UsingLocalVariableExample {
public static void main(String[] args) {
UsingLocalVariable ulv = new UsingLocalVariable();
ulv.method(20);
}
}
arg: 20
localVar: 40
[参考資料]これはジャワの本です.
Reference
この問題について(【Java】ラムティー②), 我々は、より多くの情報をここで見つけました https://velog.io/@mmy789/Java-람다식-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol