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


相关文章
|
8月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
215 7
|
9月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
239 1
|
9月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
9月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
690 1
Redis-常用语法以及java互联实践案例
|
10月前
|
安全 算法 Java
Java泛型编程:类型安全与擦除机制
Java泛型详解:从基础语法到类型擦除机制,深入解析通配符与PECS原则,探讨运行时类型获取技巧及最佳实践,助你掌握泛型精髓,写出更安全、灵活的代码。
|
10月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
640 143
|
10月前
|
Java 测试技术
Java浮点类型详解:使用与区别
Java中的浮点类型主要包括float和double,它们在内存占用、精度范围和使用场景上有显著差异。float占用4字节,提供约6-7位有效数字;double占用8字节,提供约15-16位有效数字。float适合内存敏感或精度要求不高的场景,而double精度更高,是Java默认的浮点类型,推荐在大多数情况下使用。两者都存在精度限制,不能用于需要精确计算的金融领域。比较浮点数时应使用误差范围或BigDecimal类。科学计算和工程计算通常使用double,而金融计算应使用BigDecimal。
3600 102
|
10月前
|
安全 Java 编译器
Java类型提升与类型转换详解
本文详解Java中的类型提升与类型转换机制,涵盖类型提升规则、自动类型转换(隐式转换)和强制类型转换(显式转换)的使用场景与注意事项。内容包括类型提升在表达式运算中的作用、自动转换的类型兼容性规则,以及强制转换可能引发的数据丢失和运行时错误。同时提供多个代码示例,帮助理解byte、short、char等类型在运算时的自动提升行为,以及浮点数和整型之间的转换技巧。最后总结了类型转换的最佳实践,如避免不必要的转换、使用显式转换提高可读性、金融计算中使用BigDecimal等,帮助开发者写出更安全、高效的Java代码。
546 0
|
10月前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
673 0
|
10月前
|
存储 Java 容器
Java基本语法详解
本文深入讲解了Java编程的基础语法,涵盖数据类型、运算符、控制结构及数组等核心内容,帮助初学者构建坚实的编程基础。