teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2021/11/08 14:48

投稿

firstlast
firstlast

スコア138

answer CHANGED
@@ -1,4 +1,5 @@
1
1
  <結論>
2
+ 内部クラスの中から「クラス名.this」とすると、そのクラスのインスタンスを得られる。
2
3
  javaの仕様がそうなっているから、仕方ない。
3
4
 
4
5
  jimbeさんの導きで、解決できました。さらに詳しく知りたい方は、jimbeさんに教えて頂いた下記URLをご参照ください。

2

変更

2021/11/08 14:48

投稿

firstlast
firstlast

スコア138

answer CHANGED
@@ -1,8 +1,12 @@
1
1
  <結論>
2
2
  javaの仕様がそうなっているから、仕方ない。
3
3
 
4
+ jimbeさんの導きで、解決できました。さらに詳しく知りたい方は、jimbeさんに教えて頂いた下記URLをご参照ください。
5
+
4
6
  参考になったサイト
5
7
  https://www.bold.ne.jp/engineer-club/java-this
6
8
  3.thisに関する少し進んだ知識
7
9
  3-1.【中級者向け】内部クラスのエンクロージングインスタンスを指すthis
8
- 内部クラスの中から「クラス名.this」とすると、そのクラスのインスタンスを得られる。
10
+ 内部クラスの中から「クラス名.this」とすると、そのクラスのインスタンスを得られる。
11
+
12
+ 以上です。

1

修正

2021/11/08 14:47

投稿

firstlast
firstlast

スコア138

answer CHANGED
@@ -1,31 +1,8 @@
1
1
  <結論>
2
2
  javaの仕様がそうなっているから、仕方ない。
3
3
 
4
- 答え↓
4
+ 参考になったサイト
5
- 内部クラスの中から「クラス名.this」とすると、そのクラスのインスタンスを得られる。
6
-
7
5
  https://www.bold.ne.jp/engineer-club/java-this
8
-
9
6
  3.thisに関する少し進んだ知識
10
7
  3-1.【中級者向け】内部クラスのエンクロージングインスタンスを指すthis
11
-
12
-
13
- ```java
14
- class ThisSample9 {
15
- int field = 123;
16
-
17
- class InnerClass {
18
- int field = 456;
19
-
20
- void innerClassMethod() {
21
- System.out.println(field); // → 456
8
+ 内部クラスの中から「クラス名.this」とすると、そのクラスのインスタンスを得られる。
22
- System.out.println(this.field); // → 456、ここでのthisはInnerClassのインスタンス
23
- System.out.println(ThisSample9.this.field); // →123、クラスを明示的に指定してthisを得る
24
- }
25
- }
26
-
27
- public static void main(String[] args) {
28
- (new ThisSample9().new InnerClass()).innerClassMethod();
29
- }
30
- }
31
- ```