回答編集履歴

2

ソースの追記

2017/07/06 04:15

投稿

mr-hisa-child
mr-hisa-child

スコア294

test CHANGED
@@ -1,14 +1,60 @@
1
1
  ```java
2
+
3
+ <User.class>
4
+
5
+ public class User {
6
+
7
+ public static List<User> instances = new ArrayList<>();
2
8
 
3
9
 
4
10
 
5
- public class T {
11
+ private String name;
6
12
 
7
- private static List<T> instances = new ArrayList<>();
8
13
 
14
+
9
- public T(){
15
+ public User(String name){
16
+
17
+ this.name = name;
10
18
 
11
19
  instances.add(this);
20
+
21
+ }
22
+
23
+
24
+
25
+ public String getName(){
26
+
27
+ return name;
28
+
29
+ }
30
+
31
+ }
32
+
33
+
34
+
35
+ <Main.class>
36
+
37
+ public class Main{
38
+
39
+ public static void main(String[] args){
40
+
41
+ User u1 = new User("太郎");
42
+
43
+ User u2 = new User("花子");
44
+
45
+
46
+
47
+ u1 = null; // インスタンス解放
48
+
49
+ u2 = null; // インスタンス解放
50
+
51
+
52
+
53
+ User.instances.forEach((u) -> {
54
+
55
+ System.out.println(u.getName()); // 名前が出力される
56
+
57
+ });
12
58
 
13
59
  }
14
60
 
@@ -18,7 +64,7 @@
18
64
 
19
65
  ```
20
66
 
21
- ```instances```に格納されているTクラスのインスタンスは、明示的に```instances```から削除してあげないと、Tクラスのインスタンスは残り続けますよという意味かな?
67
+ ```instances```に格納されているUserクラスのインスタンスは、明示的に```instances```から削除してあげないと、Tクラスのインスタンスは残り続けますよという意味かな?
22
68
 
23
69
 
24
70
 

1

コードの修正

2017/07/06 04:15

投稿

mr-hisa-child
mr-hisa-child

スコア294

test CHANGED
@@ -4,11 +4,9 @@
4
4
 
5
5
  public class T {
6
6
 
7
- private static List<T> instances;
7
+ private static List<T> instances = new ArrayList<>();
8
8
 
9
9
  public T(){
10
-
11
- instances = new ArrayList<>();
12
10
 
13
11
  instances.add(this);
14
12