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