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


相关文章
|
24天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
29天前
|
Java
java中的泛型类型擦除
java中的泛型类型擦除
13 2
|
1月前
|
存储 Java 容器
JAVA基本语法
JAVA基本语法
15 0
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
1天前
|
存储 算法 安全
什么是Java泛型类型?
【4月更文挑战第13天】
6 0
什么是Java泛型类型?
|
7天前
|
Java
Java 16 新玩法:instanceof 升级版,让类型检查更精准
Java 16 新玩法:instanceof 升级版,让类型检查更精准
12 0
|
7天前
|
存储 监控 安全
泛型魔法:解码Java中的类型参数
泛型魔法:解码Java中的类型参数
30 0
泛型魔法:解码Java中的类型参数
|
7天前
|
存储 安全 Java
Java语法掌握:打好编程基础的关键(二)
Java语法掌握:打好编程基础的关键
41 0
|
7天前
|
存储 Java
Java语法掌握:打好编程基础的关键(一)
Java语法掌握:打好编程基础的关键
10 0
Java语法掌握:打好编程基础的关键(一)
|
29天前
|
存储 安全 Java
Java变量类型
Java变量类型
7 0