BeanShell松散类型的Java语法-阿里云开发者社区

开发者社区> 开发与运维> 正文

BeanShell松散类型的Java语法

简介:

上一章节的例子中,所有变量都有定义类型。如“JButton button”的类型。BeanShell 将强制执行这些类型的变量。你会发现如果你试图分配非 JBuoon 的类型给变量“button”(你会得到一个错误的消息),BeanShell会对它进行类型强制转换。然而,BeanShell 同样支持“松散的”或者动态地指定类型类型。也就是说,你可以不需要先定义变量以及指定特定的变量类型来指向变量(比如:" hashtable = new Hashtable(); "hashtable 是一个未定义且没有指定类型的变量)。既然如此,BeanShell 将酌情在运行时做类型检查。所以,我们可以在之前的例子中去掉左边的类型来运行,如下:

 

原来的代码:


Hashtable hashtable = new Hashtable();
Date date = new Date();
hashtable.put( "today", date );
// 打印当前系统的时间值
print( System.currentTimeMillis() );

 

JButton button = new JButton( "My Button" );
JFrame frame = new JFrame( "My Frame" );
frame.getContentPane().add( button, "Center" );
frame.pack();
frame.setVisible(true);

松散类型的写法(去掉左边的类型定义,包括“Hashtable hashtable”中的“Hashtable”,“Date date”中的“Date”等):

  

这样看起来似乎并没有为我们节省大量的工作。但是当你渐渐依赖写脚本,把它作为你开发和测试过程中的一部分,你就会发现与以前的开发大有不同。尤其在交互式的使用中。

 

当你使用“松散”的变量时,你可以在之后的使用中自由地将它重新指派给另一个 Java 对象类型。没有指定类型的 BeanShell 变量也可以自由地持有像 int 和 boolean一样的 Java 原始类型。别担心,BeanShell 总是知道变量的真实类型而且只是酌情地让我们使用这些变量。对于原始类型,这包括当你在表达式中使时真正的 Java 语言会做正确的数字类型提升。(说明类型提升规则的例子:byte型和short型的值被提升到int


本文转自 tongqiuyan  51CTO博客,原文链接:http://blog.51cto.com/tongqiuyan/747731


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章