47 |
{ |
{ |
48 |
this.name = name; |
this.name = name; |
49 |
this.type = type; |
this.type = type; |
50 |
|
this.typename = TypeSignature.getEncodingOfClass(type); |
51 |
} |
} |
52 |
|
|
53 |
|
/** |
54 |
|
* There're many cases you can't get java.lang.Class from typename if your context |
55 |
|
* class loader can't load it, then use typename to construct the field |
56 |
|
*/ |
57 |
|
ObjectStreamField (String name, String typename){ |
58 |
|
this.name = name; |
59 |
|
this.typename = typename; |
60 |
|
try{ |
61 |
|
type = TypeSignature.getClassForEncoding(typename); |
62 |
|
}catch(ClassNotFoundException e){ |
63 |
|
type = Object.class; //?? |
64 |
|
} |
65 |
|
} |
66 |
|
|
67 |
public String getName () |
public String getName () |
68 |
{ |
{ |
69 |
return name; |
return name; |
76 |
|
|
77 |
public char getTypeCode () |
public char getTypeCode () |
78 |
{ |
{ |
79 |
return TypeSignature.getEncodingOfClass (type).charAt (0); |
return typename.charAt (0); |
80 |
} |
} |
81 |
|
|
82 |
public String getTypeString () |
public String getTypeString () |
83 |
{ |
{ |
84 |
return TypeSignature.getEncodingOfClass (type); |
// use intern() |
85 |
|
return typename.intern(); |
86 |
} |
} |
87 |
|
|
88 |
public int getOffset () |
public int getOffset () |
122 |
|
|
123 |
private String name; |
private String name; |
124 |
private Class type; |
private Class type; |
125 |
|
private String typename; |
126 |
private int offset = -1; // XXX make sure this is correct |
private int offset = -1; // XXX make sure this is correct |
127 |
} |
} |