布尔类型转换系统(Java)
我正在考虑一个灵活的模板系统类型转换系统。我需要将任何对象类型映射到有意义的布尔值,以简化灵活性和可用性 <> P>有很多事情要考虑,我们喜欢工作系统,所以我们先看看现有的解决方案。 例如,在PHP中,存在以下布尔值转换系统: 如果不是,则认为(布尔值)为真:布尔类型转换系统(Java),java,javascript,php,templates,Java,Javascript,Php,Templates,我正在考虑一个灵活的模板系统类型转换系统。我需要将任何对象类型映射到有意义的布尔值,以简化灵活性和可用性 P>有很多事情要考虑,我们喜欢工作系统,所以我们先看看现有的解决方案。 例如,在PHP中,存在以下布尔值转换系统: 如果不是,则认为(布尔值)为真: false(布尔值) 0(整数、长、短、字节、大整数) 0.0(浮动) “”(字符串) 空数组 空集合或地图 空的 现在的问题是,这是一个好的系统吗?其他系统使用哪些其他规则?这个有什么缺点 我目前也在考虑这个系统: 一切都是假的,除了:
- false(布尔值)
- 0(整数、长、短、字节、大整数)
- 0.0(浮动)
- “”(字符串)
- 空数组
- 空集合或地图
- 空的
- 真(布尔)
- 1(数字)
- “真”(字符串)
- 非空(对象)
- 非空数组、集合或映射
[/Update]据我所知,我希望这将对您有所帮助 没有什么不对的。这只取决于你的要求
1. $is_tested = ($tested=="Completed") ? TRUE : FALSE;
2. $is_tested = ($tested=="TRUE") ? TRUE : FALSE;
JAVA
1. boolean is_tested = (tested=="Completed") ? TRUE : FALSE;
2. boolean is_tested = (tested=="TRUE") ? TRUE : FALSE;
对不起,我没有太多的java知识 在IBM WEB Sphere中, PHP和Java之间的类型转换 甚至我建议您参考IBMWeb-SPHERE进行类型转换。 这是一个
我希望这可以帮助您,并提供更多的想法。自动转换为布尔值可以看作是“特殊值意味着失败”成语的变体。这很容易出错,因为不同的操作使用不同的值,因为有效返回值的范围不同。设计一种只考虑一个用例的编程语言总是很危险的 让我们从第一个示例(php)开始:
- 0表示false:大多数
方法(集合、字符串等)返回indexOf
表示“未找到”,而0是有效值。这同样适用于-1
InputStream.read
- 0.0(float)意味着false:这几乎从来没有用过。对于真正不存在的值,有
,而零常常是有效的结果,没有理由使其比NaN
更特殊+4.9E-324
- “”(String)表示false:查看
:读取文本文件时,空的BufferedReader.readLine
是有效值String
标记文件结束null
- 空数组、空集合或映射:与下一项冲突
- null表示false:如果
s和Collection
s不是一个对象,这可能很有用,但在使用子类时更改规则不是一个好主意。当然,在某些情况下,String
是一个有效值,您必须查看异常或特殊错误变量null
- 真(布尔)
- 1(数字)
- “真”(字符串)
- 非空(对象)
- 非空数组、集合或映射
“true”
字符串,情况几乎类似。除了系统属性外,没有人返回字符串“true”
,其中可以只返回布尔值true
。不必谈及区分大小写的问题或问题,为什么不接受“是”等等,它与后来的“非<代码> NUL/<代码>规则冲突。如果在应用自动布尔转换之前将字符串
强制转换为对象
,会有什么不同?数组/集合规则具有相同的模糊性
在某些语言中,精心选择的与该语言库同步的自动转换可能会产生令人信服的结果。但我从没见过。所有支持这种转换的语言都有它们的陷阱或“不使用when…”规则。如果您想将Java绑定到您的脚本语言,那么其好处甚至不太可能超过错误风险。Java API设计用于没有自动转换功能的语言。例如,JavaScript falsy值为