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 |
| package com.jeantessier.classreader.impl; |
34 |
| |
35 |
| import java.io.*; |
36 |
| import java.util.*; |
37 |
| |
38 |
| import com.jeantessier.classreader.*; |
39 |
| |
40 |
| public class Field_info extends Feature_info implements com.jeantessier.classreader.Field_info { |
41 |
| private static final int ACC_VOLATILE = 0x0040; |
42 |
| private static final int ACC_TRANSIENT = 0x0080; |
43 |
| private static final int ACC_ENUM = 0x4000; |
44 |
| |
45 |
1974
| public Field_info(Classfile classfile, DataInput in) throws IOException {
|
46 |
1974
| super(classfile, in);
|
47 |
| } |
48 |
| |
49 |
9184
| public String getFeatureType() {
|
50 |
9184
| return "field";
|
51 |
| } |
52 |
| |
53 |
8158
| public boolean isVolatile() {
|
54 |
8158
| return (getAccessFlag() & ACC_VOLATILE) != 0;
|
55 |
| } |
56 |
| |
57 |
8158
| public boolean isTransient() {
|
58 |
8158
| return (getAccessFlag() & ACC_TRANSIENT) != 0;
|
59 |
| } |
60 |
| |
61 |
29
| public boolean isEnum() {
|
62 |
29
| return (getAccessFlag() & ACC_ENUM) != 0;
|
63 |
| } |
64 |
| |
65 |
8073
| public String getType() {
|
66 |
8073
| return DescriptorHelper.getType(getDescriptor());
|
67 |
| } |
68 |
| |
69 |
7820
| public String getDeclaration() {
|
70 |
7820
| StringBuffer result = new StringBuffer();
|
71 |
| |
72 |
7820
| if (isPublic()) result.append("public ");
|
73 |
0
| if (isProtected()) result.append("protected ");
|
74 |
0
| if (isPrivate()) result.append("private ");
|
75 |
6001
| if (isStatic()) result.append("static ");
|
76 |
6001
| if (isFinal()) result.append("final ");
|
77 |
0
| if (isVolatile()) result.append("volatile ");
|
78 |
0
| if (isTransient()) result.append("transient ");
|
79 |
| |
80 |
7820
| result.append(getType()).append(" ");
|
81 |
7820
| result.append(getName());
|
82 |
| |
83 |
7820
| return result.toString();
|
84 |
| } |
85 |
| |
86 |
28
| public String getFullDeclaration() {
|
87 |
28
| String result = getDeclaration();
|
88 |
| |
89 |
28
| if (getConstantValue() != null) {
|
90 |
28
| if (getConstantValue().getRawValue() instanceof String_info) {
|
91 |
12
| result += " = \"" + getConstantValue().getRawValue() + "\"";
|
92 |
| } else { |
93 |
16
| result += " = " + getConstantValue().getRawValue();
|
94 |
| } |
95 |
| } |
96 |
| |
97 |
28
| return result;
|
98 |
| } |
99 |
| |
100 |
2543
| public String getSignature() {
|
101 |
2543
| return getName();
|
102 |
| } |
103 |
| |
104 |
2062
| public ConstantValue_attribute getConstantValue() {
|
105 |
2062
| ConstantValue_attribute result = null;
|
106 |
| |
107 |
2062
| Iterator i = getAttributes().iterator();
|
108 |
2062
| while (result == null && i.hasNext()) {
|
109 |
1522
| Object temp = i.next();
|
110 |
1522
| if (temp instanceof ConstantValue_attribute) {
|
111 |
1437
| result = (ConstantValue_attribute) temp;
|
112 |
| } |
113 |
| } |
114 |
| |
115 |
2062
| return result;
|
116 |
| } |
117 |
| |
118 |
381
| public void accept(Visitor visitor) {
|
119 |
381
| visitor.visitField_info(this);
|
120 |
| } |
121 |
| } |