PHP弱类型与JAVA强类型之间的矛盾
2016-02-22 11:51
555 查看
As we know,PHP是一门弱类型的语言,所以在声明变量的时候,可以不用说明类型。这一特性,在PHP的开发过程中,String类型和Integer类型经常可以混淆。但是,Java是一门强类型的语言,String类型和Integer类型的转换是需要借助接口来实现的。在APP的开发当中,我就遇到了这样一个问题,Server端(PHP语言)中输出的数据是String类型,而client端(JAVA语言)需要的是Integer类型,所以就报错了,如下图:
![](http://img.blog.csdn.net/20160222113746626?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
面对这个报错,我有两个思路来解决:
1、修改client端的代码,让Java默认接收String类型,然后强制转换成Integer类型;
2、修改Server端的代码,让php输出的数值的类型强制转换成Integer。
考虑到client端的代码除了接收server端的数据,还有可能接收client端其他模块传递过来的数据,所以在client端修改代码,治标不治本,反而会带来未知Bug的风险。综合考虑,我还是来修改Server端的代码吧。
通过对Server端代码的调试,查到哪些数据的类型出现了错误,如下:
![](http://img.blog.csdn.net/20160222114236081?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
friendUserId和friendLevel字段本身设定为Integer类型,但是PHP输出的时候是带""的,也就是被转换成了String类型。那么,我们要做的就是将""去掉。如何实现呢?很简单,那就是强制转换。
![](http://img.blog.csdn.net/20160222114517200?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后来看下效果吧。
![](http://img.blog.csdn.net/20160222114701703?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后Server端输出的数据类型符合了预期的效果,这样一来,Client端就能正确读取了。
写在最后:
如果用惯了php语言,一下子转换到Java语言,就会忽略数据类型的存在,也就会导致这两种语言之间的矛盾。
如果有时间,后续想抽象一下,将这个解决方案对象化,这样就能节约代码。
面对这个报错,我有两个思路来解决:
1、修改client端的代码,让Java默认接收String类型,然后强制转换成Integer类型;
2、修改Server端的代码,让php输出的数值的类型强制转换成Integer。
考虑到client端的代码除了接收server端的数据,还有可能接收client端其他模块传递过来的数据,所以在client端修改代码,治标不治本,反而会带来未知Bug的风险。综合考虑,我还是来修改Server端的代码吧。
通过对Server端代码的调试,查到哪些数据的类型出现了错误,如下:
friendUserId和friendLevel字段本身设定为Integer类型,但是PHP输出的时候是带""的,也就是被转换成了String类型。那么,我们要做的就是将""去掉。如何实现呢?很简单,那就是强制转换。
最后来看下效果吧。
最后Server端输出的数据类型符合了预期的效果,这样一来,Client端就能正确读取了。
写在最后:
如果用惯了php语言,一下子转换到Java语言,就会忽略数据类型的存在,也就会导致这两种语言之间的矛盾。
如果有时间,后续想抽象一下,将这个解决方案对象化,这样就能节约代码。
相关文章推荐
- PHP对称加密算法(DES/AES)类
- IIS7中配置FastCGI运行PHP
- Websocket和PHP Socket编程
- 关于php运行其他语言(笔记)
- PHP常用的文件操作函数集锦
- php函数
- php判断是否为手机站
- phpstorm10.0.3破解版安装教程及汉化方法
- 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送
- PHP语句中or的用法
- FileInputstream和FileOutputStream类、Reader类和Writer类的用法
- PHP学习
- php中Session使用方法详解
- session_save_path.php AccessSESSION.php
- php配置文件php.ini中文详解
- PHP线程安全和非线程安全的区别
- 图片处理类库PHPThumb
- 命令行的形式运行php
- PHP如何将字符首字母大小写转换
- php常见问题以及解决方法