WEB开发网
开发学院软件开发Java Classworking 工具箱: 分析泛型数据结构 阅读

Classworking 工具箱: 分析泛型数据结构

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 清单 1 显示了我用作基本数据结构表示的类,FieldDescription 类只是个简单的数据类,Classworking 工具箱: 分析泛型数据结构(2),容纳字段名称、签名和字段类型的引用,正如我在 前一期 中介绍的,将只使用 null 值,最后,签名是泛型添加到类文件格式中的项目;只有对

清单 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(); 
} 

上一页  1 2 3 4 5 6 7  下一页

Tags:Classworking 工具箱 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接