WEB开发网
开发学院软件开发Java Classworking 工具箱: 注释(Annotation)与 ASM 阅读

Classworking 工具箱: 注释(Annotation)与 ASM

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 下一小节我将介绍一个不同的(我认为是更有趣的)应用程序,构建 toString() 方法Java 平台提供了一个方便的挂钩,Classworking 工具箱: 注释(Annotation)与 ASM(3),以生成 toString() 方法形式的对象的文本描述,最终基类 java.lang.Ob

下一小节我将介绍一个不同的(我认为是更有趣的)应用程序。

构建 toString() 方法

Java 平台提供了一个方便的挂钩,以生成 toString() 方法形式的对象的文本描述。最终基类 java.lang.Object 提供了该方法的一个默认实现,但是仍鼓励重写默认实现以提供更有用的描述。许多开发人员习惯提供自己的实现,至少对于那些基本上是数据表示的类是这样。我要先承认我不是其中之一 —— 我常常认为 toString() 非常有用,一般不会费心去重写默认实现。为了更有用些,当从类中添加或删除字段时,toString() 实现需要保持最新。而我发现总的来说这一步太麻烦而不值得实现。

把注释与类文件修改组合起来可以提供一种走出这一困境的方法。我所遇到的维护 toString() 方法的问题是由于代码与类中的字段声明分离了,这意味着每次添加或删除字段时还有一个需要记得更改的东西。通过在字段声明时使用注释,可以很容易地表明想要在 toString() 方法中包含哪些字段,而把该方法的实际实现留给 classworking 工具。这样,所有的东西都在一个地方(字段声明中),而且获得了 toString() 的有用的描述而无需维护代码。

源代码示例

在实现 toString() 方法结构的注释之前,我将给出要实现的代码示例。清单 2 展示了源代码中包含 toString() 方法的示例数据保持类:

清单 2. 带有 toString() 方法的数据类

public class Address 
{ 
  private String m_street; 
  private String m_city; 
  private String m_state; 
  private String m_zip; 
   
  public Address() {} 
  public Address(String street, String city, String state, String zip) { 
    m_street = street; 
    m_city = city; 
    m_state = state; 
    m_zip = zip; 
  } 
  public String getCity() { 
    return m_city; 
  } 
  public void setCity(String city) { 
    m_city = city; 
  } 
  ... 
  public String toString() { 
    StringBuffer buff = new StringBuffer(); 
    buff.append("Address: street="); 
    buff.append(m_street); 
    buff.append(", city="); 
    buff.append(m_city); 
    buff.append(", state="); 
    buff.append(m_state); 
    buff.append(", zip="); 
    buff.append(m_zip); 
    return buff.toString(); 
  } 
} 

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

Tags:Classworking 工具箱 注释

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