package bluej.debugger.gentype;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import bluej.utility.JavaReflective;


| A specialization of GenTypeClass for arrays. | | @author Davin McCall | public class GenTypeArray extends GenTypeSolid{ JavaType baseType;
| Construct a new GenTypeArray, with the given component type. | public GenTypeArray(JavaType baseType) { super(); this.baseType = baseType; } public String toString(boolean stripPrefix) { return baseType.toString(stripPrefix) + "[]"; } public String toString(NameTransform nt) { return baseType.toString(nt) + "[]"; } @Override public String toTypeArgString(NameTransform nt) { return toString(nt); } public String arrayComponentName() { return "[" + baseType.getUpperBound().arrayComponentName(); } @Override public JavaType getCapture() { JavaType baseCap = baseType.getCapture(); if (baseCap == baseType) { return this; } return baseCap.getArray(); } public JavaType getArrayComponent() { return baseType; } public GenTypeSolid getLowerBound() { return this; } @Override public boolean equals(JavaType other) { return baseType.equals(other.getArrayComponent()); } @Override public void erasedSuperTypes(Set<Reflective> s) { GenTypeSolid baseSolid = baseType.getUpperBound().asSolid(); if (baseSolid != null) { Set<Reflective> bSupers = new HashSet<Reflective>(); baseSolid.erasedSuperTypes(bSupers); for (Reflective r : bSupers) { s.add(r.getArrayOf()); } } else { Class<?> aClass = null; JavaType baseType = this.baseType.getUpperBound(); if (baseType.typeIs(JT_VOID)) { aClass = void.class; } else if (baseType.typeIs(JT_BOOLEAN)) { aClass = boolean.class; } else if (baseType.typeIs(JT_BYTE)) { aClass = byte.class; } else if (baseType.typeIs(JT_CHAR)) { aClass = char.class; } else if (baseType.typeIs(JT_DOUBLE)) { aClass = double.class; } else if (baseType.typeIs(JT_FLOAT)) { aClass = float.class; } else if (baseType.typeIs(JT_INT)) { aClass = int.class; } else if (baseType.typeIs(JT_LONG)) { aClass = long.class; } s.add(new JavaReflective(aClass).getArrayOf()); } } @Override public GenTypeArray getArray() { return new GenTypeArray(this); } @Override public JavaType getErasedType() { JavaType baseErased = baseType.getErasedType(); if (baseErased == baseType) { return this; } else { return baseErased.getArray(); } } @Override public void getParamsFromTemplate(Map<String, GenTypeParameter> map, GenTypeParameter template) { GenTypeParameter ntemplate = template.getArrayComponent(); if (ntemplate != null) { baseType.getParamsFromTemplate(map, ntemplate); } } @Override public GenTypeClass[] getReferenceSupertypes() { return new GenTypeClass[0]; } @Override public GenTypeParameter mapTparsToTypes(Map<String, ? extends GenTypeParameter> tparams) { GenTypeParameter mappedBase = baseType.mapTparsToTypes(tparams); if (mappedBase != baseType) { if (mappedBase.isWildcard()) { GenTypeSolid ubound = mappedBase.getUpperBound().asSolid(); ubound = (ubound == null) ? null : ubound.getArray(); GenTypeSolid lbound = mappedBase.getLowerBound(); lbound = (lbound == null) ? null : lbound.getArray(); new GenTypeWildcard(ubound, lbound); } return mappedBase.getUpperBound().getArray(); } return this; } @Override public boolean isAssignableFrom(JavaType t) { JavaType componentType = t.getArrayComponent(); if (componentType != null) { return baseType.isAssignableFrom(componentType); } return false; } @Override public boolean isAssignableFromRaw(JavaType t) { JavaType componentType = t.getArrayComponent(); if (componentType != null) { return baseType.isAssignableFromRaw(componentType); } return false; } @Override public boolean isInterface() { return false; } }
top, use, map, class GenTypeArray

.   GenTypeArray
.   toString
.   toString
.   toTypeArgString
.   arrayComponentName
.   getCapture
.   getArrayComponent
.   getLowerBound
.   equals
.   erasedSuperTypes
.   getArray
.   getErasedType
.   getParamsFromTemplate
.   getReferenceSupertypes
.   mapTparsToTypes
.   isAssignableFrom
.   isAssignableFromRaw
.   isInterface




262 neLoCode + 3 LoComm