在 BeanShell 中,你可以对 JavaBean 的属性进行存取,存取的方式如同使用字段一样。

 
  
  1. button = new java.awt.Button(); 
  2. button.label = "my button"; // 等同于: b.setLabel("my button"); 
  3. print( button.label ); // 等同于 print( b.getLabel() ); 



JavaBean 属性仅仅是一对要遵守命名规范的“setter”方法和“getter”方法。在上面的例子中,BeanShell 涉及一个名叫“setLabel()”的“setter”方法并使用该方法分配了一个 string 类型的值。之后使用 getLabel() 方法重新获得值。

Boolean 属性可以选择性地使用语法“is”作为“getter”方法。比如:(注意“infinite”属性和“isInfinite()”方法)

 
  
  1. Float f = new Float(42f); 
  2. print( f.infinite ); // 等同于 print( f.isInfinite() ); // 打印 false 



如 果有任何与一个实际 Java 对象字段名称存在歧义的情况(例如:上面 label 的例子)那么优先使用确切的字段名。如果你希望避免歧义,Beanshell 提供了一个附加的、统一的语法,不但能访问 Java Bean 属性还有 Hashtable 或者 Map。你可以使用“{}”大括号构建一个 String 的标识,作为任何适当类型变量的限定符。

 
  
  1. b = new java.awt.Button(); 
  2. b{"label"} = "my button"; // 等同于: b.setLabel("my button"); 
  3. h = new Hashtable(); 
  4. h{"foo"} = "bar"; // 等同于: h.put("foo""bar"); 

注意图示中发生错误的地方,错误的下方是正确的代码。



java.util.Collections 的 API 适用的地方,同样支持 Map。