package bluej.parser.entity;
import java.util.List;
import bluej.debugger.gentype.GenTypeDeclTpar;
import bluej.debugger.gentype.GenTypeSolid;
import bluej.debugger.gentype.JavaType;
import bluej.debugger.gentype.Reflective;
import threadchecker.OnThread;
import threadchecker.Tag;
| A JavaEntity subclass for representing type parameters. In particular this avoids
| the problems associated with recursive definitions such as:
|
| <blockquote>
| <code>class Sort<T extends Comparable<T>> {} }</code></dt>
| </blockquote>
|
| @author Davin McCall
|
public class TparEntity
extends JavaEntity{
private JavaEntity bounds;
private GenTypeDeclTpar tpar;
private String name;
public TparEntity(String name, JavaEntity bounds)
{
super();
this.name = name;
this.tpar = new GenTypeDeclTpar(name);
this.bounds = bounds;
}
@Override
@OnThread(Tag.FXPlatform)
public GenTypeDeclTpar getType()
{
if (bounds != null) {
JavaEntity boundsCopy = bounds;
bounds = null;
TypeEntity tent = boundsCopy.resolveAsType();
if (tent != null) {
GenTypeSolid boundType = tent.getType().asSolid();
if (boundType != null) {
tpar.setBounds(boundType.getUpperBounds());
}
else {
tpar = null;
}
}
else {
tpar = null;
}
}
return tpar;
}
@Override
public TypeEntity resolveAsType()
{
JavaType myType = getType();
if (myType != null) {
return new TypeEntity(myType);
}
else {
return null;
}
}
@Override
public JavaEntity setTypeArgs(List<TypeArgumentEntity> tparams)
{
return null;
}
@Override
public JavaEntity getSubentity(String name, Reflective accessSource)
{
return null;
}
@Override
public String getName()
{
return name;
}
}
top,
use,
map,
class TparEntity
. TparEntity
. getType
. resolveAsType
. setTypeArgs
. getSubentity
. getName
113 neLoCode
+ 6 LoComm