回答編集履歴
2
ソースの追記
answer
CHANGED
@@ -1,13 +1,36 @@
|
|
1
1
|
```java
|
2
|
+
<User.class>
|
3
|
+
public class User {
|
4
|
+
public static List<User> instances = new ArrayList<>();
|
2
5
|
|
6
|
+
private String name;
|
7
|
+
|
3
|
-
public
|
8
|
+
public User(String name){
|
4
|
-
private static List<T> instances = new ArrayList<>();
|
5
|
-
|
9
|
+
this.name = name;
|
6
10
|
instances.add(this);
|
7
11
|
}
|
12
|
+
|
13
|
+
public String getName(){
|
14
|
+
return name;
|
15
|
+
}
|
8
16
|
}
|
9
17
|
|
18
|
+
<Main.class>
|
19
|
+
public class Main{
|
20
|
+
public static void main(String[] args){
|
21
|
+
User u1 = new User("太郎");
|
22
|
+
User u2 = new User("花子");
|
23
|
+
|
24
|
+
u1 = null; // インスタンス解放
|
25
|
+
u2 = null; // インスタンス解放
|
26
|
+
|
27
|
+
User.instances.forEach((u) -> {
|
28
|
+
System.out.println(u.getName()); // 名前が出力される
|
29
|
+
});
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
10
33
|
```
|
11
|
-
```instances```に格納されている
|
34
|
+
```instances```に格納されているUserクラスのインスタンスは、明示的に```instances```から削除してあげないと、Tクラスのインスタンスは残り続けますよという意味かな?
|
12
35
|
|
13
36
|
通常、使われなくなったインスタンスはGCで解放されます。
|
1
コードの修正
answer
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
```java
|
2
2
|
|
3
3
|
public class T {
|
4
|
-
private static List<T> instances;
|
4
|
+
private static List<T> instances = new ArrayList<>();
|
5
5
|
public T(){
|
6
|
-
instances = new ArrayList<>();
|
7
6
|
instances.add(this);
|
8
7
|
}
|
9
8
|
}
|