`

Java变量类型识别的3种方式

    博客分类:
  • J2SE
 
阅读更多

转自:http://snkcxy.iteye.com/blog/1827913

 

变量类型识别有3种方法:

  1. 通过反射拿到变量的类型
  2. instanceof关键字判断
  3. 通过java的多态(方法重载)来DIY类型识别

具体看例子吧,尤其第三种方式 有一个自定义的TypeTools,我觉得很实用。希望大家喜欢~

Java代码  收藏代码
  1. package com.cxyapi.oo;  
  2.   
  3. /** 类型识别工具测试类 
  4.  * @author cxy @ www.cxyapi.com 
  5.  */  
  6. public class TypeToolsTest  
  7. {  
  8.     public static void main(String[] args)  
  9.     {  
  10.         int i=0;  
  11.         TypeObject to=new TypeObject();  
  12.         //1.反射  
  13.         System.out.println("to的类型:"+to.getClass().getSimpleName());  
  14.         System.out.println(int.class.getSimpleName());  
  15.         System.out.println(Integer.class.getSimpleName());  
  16.         //但是对于一个不确定类型的基本数据类型变量我们没法用反射来获取其类型。  
  17.         System.out.println("----------------------");  
  18.           
  19.         //2.instanceof  
  20.         if(to instanceof TypeObject){ System.out.println("to是TypeObject类型的");}  
  21.         //但是这种办法貌似也没法确定基本数据类型  
  22.         System.out.println("----------------------");  
  23.           
  24.         //以上两种方式对于对象,引用类型的都很好用,但是对基本数据类型就不那么好用了。  
  25.         //3.通过多态(方法的重载)  
  26.         System.out.println("i是:"+TypeTools.getType(i));  
  27.         System.out.println("to是:"+TypeTools.getType(to));  
  28.         System.out.println("\"cxyapi\"是:"+TypeTools.getType("www.cxyapi.com"));  
  29.         //大家可以看出来 最后一种方式使用多态的方式达到了检测类型(基本类型和引用类型)的目的  
  30.         //它除了弥补其他两种方式不能检测基本数据类型的不足在外,还能自己DIY类型信息  
  31.     }  
  32. }  
  33.   
  34. //定义一个类,为了演示引用类型的类型检测  
  35. class TypeObject{}  

 

    自定义的类型识别工具:

Java代码  收藏代码
  1. package com.cxyapi.oo;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. /** 类型识别工具 
  7.  * @author cxy @ www.cxyapi.com 
  8.  */  
  9. public class TypeTools  
  10. {  
  11.     //获得类型  
  12.     public static Map<String,String> getType(Object o)  
  13.     {  
  14.         Map<String,String> typeInfo=new HashMap<String,String>();  
  15.         typeInfo.put("类型", o.getClass().getSimpleName());  
  16.         typeInfo.put("描述""引用类型");  
  17.         return typeInfo;  
  18.     }  
  19.       
  20.     public static Map<String,String> getType(int i)  
  21.     {  
  22.         Map<String,String> typeInfo=new HashMap<String,String>();  
  23.         typeInfo.put("类型""int");  
  24.         typeInfo.put("描述""整形");  
  25.         return typeInfo;  
  26.     }  
  27.       
  28.     public static Map<String,String> getType(long l)  
  29.     {  
  30.         Map<String,String> typeInfo=new HashMap<String,String>();  
  31.         typeInfo.put("类型""long");  
  32.         typeInfo.put("描述""长整型");  
  33.         return typeInfo;  
  34.     }  
  35.       
  36.     public static Map<String,String> getType(boolean b)  
  37.     {  
  38.         Map<String,String> typeInfo=new HashMap<String,String>();  
  39.         typeInfo.put("类型""boolean");  
  40.         typeInfo.put("描述""布尔类型");  
  41.         return typeInfo;  
  42.     }  
  43.       
  44.     public static Map<String,String> getType(char b)  
  45.     {  
  46.         Map<String,String> typeInfo=new HashMap<String,String>();  
  47.         typeInfo.put("类型""char");  
  48.         typeInfo.put("描述""字符");  
  49.         return typeInfo;  
  50.     }  
  51.       
  52.     public static Map<String,String> getType(float f)  
  53.     {  
  54.         Map<String,String> typeInfo=new HashMap<String,String>();  
  55.         typeInfo.put("类型""float");  
  56.         typeInfo.put("描述""单精度浮点型");  
  57.         return typeInfo;  
  58.     }  
  59.       
  60.     public static Map<String,String> getType(double d)  
  61.     {  
  62.         Map<String,String> typeInfo=new HashMap<String,String>();  
  63.         typeInfo.put("类型""double");  
  64.         typeInfo.put("描述""双精度浮点型");  
  65.         return typeInfo;  
  66.     }  
  67.       
  68.     public static Map<String,String> getType(String s)  
  69.     {  
  70.         Map<String,String> typeInfo=new HashMap<String,String>();  
  71.         typeInfo.put("类型""String");  
  72.         typeInfo.put("描述""字符串类型");  
  73.         return typeInfo;  
  74.     }  
  75.       
  76. }  

 

分享到:
评论

相关推荐

    java自动识别图片中的二维码

    利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据...

    java实现人脸识别

    java实现人脸识别登录,人脸识别是将摄像头捕捉到的人脸流媒体数据和数据库查询出来的base64字符数据上传到云服务器进行系统比对 百度云API

    JAVA识别OFD电子发票文件

    根据OFD文件打包规范编写的OFD电子发票关键信息识别与读取。整个类无第三方引用包,使用纯dom编写,使用方便稳定。程序可识别出电子发票上的发票代码、发票号码、合计税额、合计金额、开票日期等信息,且读取后不...

    Java 验证码识别引擎

    国内第一个绝对高识别率,高效率的Java 验证码识别引擎,推荐使用于自动发贴机、数据采集系统的图片验证码自动识别场合!使用方法:下载解压后,导入Eclipse或MyEclipse中,然后在c:盘下放置一张验证码图片(如:...

    基于Java的贝叶斯图片识别并分类的算法

    基于Java的贝叶斯图片识别并分类的算法,将图片读入后二值化,然后利用贝叶斯算法求在X发生的条件下那个类别发生的概率最大,然后进行分类

    JAVA中SQLlite数据库BLOB数据类型的存取.docx

    JAVA中SQLlite数据库BLOB数据类型的存取.docx

    JAVA一,二维码图片解析识别为数据

    JAVA一,二维码图片解析识别为数据

    java神经网络数字识别

    要用MATLAB分析数据,里面有MATLAB命令。先分离,写入数据后再用MATLAB分析数据,填入w和b就可以切割图片了,最后就是识别图片了。可以识别0~9

    java调用虹软人脸识别

    Java调用虹软人脸识别是一种非常实用的技术,可以应用于很多领域。例如,在安全领域,Java调用虹软人脸识别可以作为门禁系统的一部分,识别员工的面孔并授权访问权限。在金融领域,Java调用虹软人脸识别可以用于身份...

    基于java的一个手写识别小软件

    这是大二初学java时写的一个手写识别小软件。 这里包含了整个程序的源代码,《概要设计说明书》,javadoc 和 UML类图。 Version: 1.0 压缩包中包含了: 1.任务综合报告:概要设计说明书.docx 2.程序源代码文件:...

    Java程序设计基础:环境变量配置.pptx

    指向JDK安装后的根目录,如“ C:\Program files\Java\jdk1.8.0_20”,Eclipse、NetBeans等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。 Path 环境变量 指向Java命令程序所在目录,设置Path后,操作系统...

    百度人脸识别API java调用

    右键项目--》Java Build Path---&gt;Libraries----&gt;点开 JRE System Library[...]---》选中Access rules defined...----》edit----》Add---&gt;选Accessible---&gt;填** 2、 调注册接口 报 {"id":0,"error":{"error_code":...

    java车牌识别停车计费系统.zip

    车牌识别停车计费系统 postgres包是数据安装文件

    Java使用Tesseract4.0训练字库并且识别训练后的图片

    java文件使用:使用Tesseract方法可通过pom方式和jar包方式; 注意:使用前先查看“训练步骤”的那个文档,里面有详细说明,一定要查看;重要!!! 注意:使用前先查看“训练步骤”的那个文档,里面有详细说明,...

    配置java环境变量.txt

    3)在path变量(已存在不用新建)添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(注意变量值之间用“;”隔开) 4、“开始”--&gt;“运行”--&gt;输入“javac”--&gt;"Enter",如果能正常打印用法说明配置成功! 补充环境...

    Java+OpenCV+OCR 图像字符处理

    需配置好OpenCV和OCR环境

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包3

    WARTS是一个纯Java数据库工具,可以执行字符编码识别的数据同步。开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的...

    NB java weka 数据挖掘 机器学习 模式识别 朴素贝叶斯

    NB java weka 数据挖掘 机器学习 模式识别 朴素贝叶斯

    Java 车牌识别

    数字图像处理实际上是利用计算机对图像信息进行加工处理, 以改善图像质量、压缩图像数据或从图像数据中获取更多信息。随着微机、VLSI,DSP 等技术和新的理论、处理方法不断发展,数字图像处理已经成为一门独立的新...

Global site tag (gtag.js) - Google Analytics