-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathClassInitialization.java
More file actions
66 lines (53 loc) · 1.61 KB
/
ClassInitialization.java
File metadata and controls
66 lines (53 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package typeinfo;
/**
* RUN:
* javac typeinfo/ClassInitialization.java && java typeinfo.ClassInitialization
* OUTPUT:
* After creation link on Initable
* 47
* Initialization of Initable
* 258
* Initialization of Initable2
* 147
* Initialization of Initable3
* After creation link on Initable3
* 74
*/
// import java.util.logging.*;
import java.util.*;
public class ClassInitialization {
public static Random rand = new Random(47);
public static void main(String[] args) throws Exception {
Class initable = Initable.class;
System.out.println("After creation link on Initable");
// no initialization
System.out.println(Initable.staticFinal);
// initialization
System.out.println(Initable.staticFinal2);
// initialization
System.out.println(Initable2.staticNonFinal);
// initialization
Class initable3 = Class.forName("typeinfo.Initable3");
System.out.println("After creation link on Initable3");
System.out.println(Initable3.staticNonFinal);
}
}
class Initable {
static final int staticFinal = 47;
static final int staticFinal2 = ClassInitialization.rand.nextInt(1000);
static {
System.out.println("Initialization of Initable");
}
}
class Initable2 {
static int staticNonFinal = 147;
static {
System.out.println("Initialization of Initable2");
}
}
class Initable3 {
static int staticNonFinal = 74;
static {
System.out.println("Initialization of Initable3");
}
}