在 BeanShell 中,你可以对 JavaBean 的属性进行存取,存取的方式如同使用字段一样。
- button = new java.awt.Button();
- button.label = "my button"; // 等同于: b.setLabel("my button");
- print( button.label ); // 等同于 print( b.getLabel() );
JavaBean 属性仅仅是一对要遵守命名规范的“setter”方法和“getter”方法。在上面的例子中,BeanShell 涉及一个名叫“setLabel()”的“setter”方法并使用该方法分配了一个 string 类型的值。之后使用 getLabel() 方法重新获得值。
Boolean 属性可以选择性地使用语法“is”作为“getter”方法。比如:(注意“infinite”属性和“isInfinite()”方法)
- Float f = new Float(42f);
- print( f.infinite ); // 等同于 print( f.isInfinite() ); // 打印 false
如 果有任何与一个实际 Java 对象字段名称存在歧义的情况(例如:上面 label 的例子)那么优先使用确切的字段名。如果你希望避免歧义,Beanshell 提供了一个附加的、统一的语法,不但能访问 Java Bean 属性还有 Hashtable 或者 Map。你可以使用“{}”大括号构建一个 String 的标识,作为任何适当类型变量的限定符。
- b = new java.awt.Button();
- b{"label"} = "my button"; // 等同于: b.setLabel("my button");
- h = new Hashtable();
- h{"foo"} = "bar"; // 等同于: h.put("foo", "bar");
注意图示中发生错误的地方,错误的下方是正确的代码。
java.util.Collections 的 API 适用的地方,同样支持 Map。
转载于:https://blog.51cto.com/tongqiuyan/749512