Classworking 工具箱: 分析泛型数据结构
2010-03-18 00:00:00 来源:WEB开发网清单 1 显示了我用作基本数据结构表示的类。FieldDescription 类只是个简单的数据类,容纳字段名称、签名和字段类型的引用。正如我在 前一期 中介绍的,签名是泛型添加到类文件格式中的项目;只有对泛型的引用才有签名。签名定义了泛型实际使用的参数类型,所以它提供了处理类型替换时需要的信息。对于没有签名的字段,将只使用 null 值。最后,字段类型都是 TypeDescription 类的实例,如清单 1 所示:
清单 1. 基本数据结构类
public class FieldDescription
{
// every field has a name
private final String m_name;
// only fields that are of generic types have signatures
private final String m_signature;
// type only defined when parameter types are defined
private final TypeDescription m_type;
public FieldDescription(String name, String sig, TypeDescription type) {
m_name = name;
m_signature = sig;
m_type = type;
}
public String getName() {
return m_name;
}
public String getSignature() {
return m_signature;
}
public TypeDescription getType() {
return m_type;
}
}
public abstract class TypeDescription
{
public static final FieldDescription[] EMPTY_FIELD_ARRAY = {};
private final String m_descriptor;
protected TypeDescription(String dtor) {
m_descriptor = dtor;
}
public boolean isArray() {
return false;
}
public TypeDescription getArrayItemType() {
throw new IllegalStateException("Not an array");
}
public boolean isPrimitive() {
return false;
}
public FieldDescription[] getFields() {
return EMPTY_FIELD_ARRAY;
}
public String getDescriptor() {
return m_descriptor;
}
public boolean equals(Object obj) {
if (obj == this) {
return true;
} else if (obj instanceof TypeDescription) {
return m_descriptor.equals(((TypeDescription)obj).m_descriptor);
} else {
return false;
}
}
public int hashCode() {
return m_descriptor.hashCode();
}
public abstract String toString();
}
Tags:Classworking 工具箱 分析
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接