44 volatile RuntimeJavaType[] interfaces;
45 readonly RuntimeJavaType ultimateElementTypeWrapper;
58 Debug.Assert(!ultimateElementTypeWrapper.IsArray);
59 this.ultimateElementTypeWrapper = ultimateElementTypeWrapper;
62 internal override RuntimeJavaType BaseTypeWrapper
64 get {
return Context.
JavaBase.TypeOfJavaLangObject; }
67 internal override RuntimeClassLoader ClassLoader => ultimateElementTypeWrapper.ClassLoader;
71 return context.
Types.
Array.GetMethod(
"Clone", BindingFlags.Public | BindingFlags.Instance,
null,
Type.EmptyTypes,
null);
82 internal override Modifiers ReflectiveModifiers
86 return Modifiers.Final | Modifiers.Abstract | (ultimateElementTypeWrapper.ReflectiveModifiers &
Modifiers.AccessMask);
90 internal override string SigName
99 internal override RuntimeJavaType[] Interfaces
103 if (interfaces ==
null)
105 RuntimeJavaType[] tw =
new RuntimeJavaType[2];
106 tw[0] = Context.
JavaBase.TypeOfJavaLangCloneable;
107 tw[1] = Context.
JavaBase.TypeOfJavaIoSerializable;
114 internal override Type TypeAsTBD
118 while (arrayType ==
null)
120 bool prevFinished = finished;
121 Type type = MakeArrayType(ultimateElementTypeWrapper.TypeAsArrayType,
this.ArrayRank);
153 internal override void Finish()
157 ultimateElementTypeWrapper.Finish();
170 internal override bool IsFastClassLiteralSafe
174 get {
return ultimateElementTypeWrapper.IsFastClassLiteralSafe || ultimateElementTypeWrapper.IsPrimitive; }
177 internal override RuntimeJavaType GetUltimateElementTypeWrapper()
179 return ultimateElementTypeWrapper;
182 internal static Type MakeArrayType(
Type type,
int dims)
188 for (
int i = 0; i < dims; i++)
190 type = type.MakeArrayType();
Maintains services relevant to an instane of the IKVM runtime.
Types Types
Gets the Types associated with this instance of the runtime.
CoreClasses JavaBase
Gets the CoreClasses associated with this instance of the runtime.