`

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编程语言中,泛型(Generics)是一种强大的特性,它允许我们在编写代码时指定容器(如集合)可以存储的数据类型。这提高了代码的安全性和效率,因为编译器可以在编译时检查类型,避免了运行时...

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

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

    java条形码识别

    通过ZXing库,Java开发者可以轻松地在各种应用中集成条形码识别功能,提升数据处理的效率和准确性。结合`Barcode.java`的源代码,你可以更好地理解如何在实践中使用ZXing,从而实现你自己的条形码识别系统。

    Java OCR 图像智能字符识别技术,可识别中文

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...

    识别率很高的java文字识别技术

    Java文字识别技术是一种利用计算机视觉和模式识别原理,将图像中的文字转换为可编辑文本的技术。在Java中实现高识别率的文字识别,通常需要借助外部的OCR(Optical Character Recognition)引擎。tesseract-ocr是一...

    Java 虹膜识别程序 Java 虹膜识别

    项目可能使用了Java的基础类库,以及特定于生物识别的库,如Java Advanced Imaging (JAI) 或OpenCV等,来处理图像数据。 3. **图像处理**:在虹膜识别中,图像处理是非常关键的一环。开发者可能使用了Java的图像...

    java_指纹识别_源码

    Java指纹识别技术是一种生物特征识别技术,它利用人体指纹的唯一性和稳定性来进行个人身份的确认。在本项目中,"java_指纹识别_源码" 提供了一个完整的项目工程源码,适合初学者学习和公司项目直接应用。下面将详细...

    java手写识别超级准确

    Java手写识别技术是一种在Java平台上实现的图像处理与机器学习技术,主要用于识别手写数字或字符。在本项目中,"java手写识别超级准确" 提示我们这是一个高效的识别系统,具有高度的准确率,并且它采用了Swing库来...

    图文识别_java图文识别_java文字识别_

    Java在处理图文识别时,不仅可以识别文字,还可以处理图像中的其他元素,如图表、符号等,这在数据分析、文档自动化等领域非常有用。 总结来说,Java提供了强大的工具和库,使得开发人员能够轻松实现图文识别和文字...

    JAVA智能验证码识别,可训练识别率高

    它可以识别多种语言,并且可以通过训练数据集来提高对特定类型验证码的识别能力。在JAVA中使用Tesseract,开发者需要引入Tesseract的JAVA绑定库,例如tess4j,它可以提供一个简单的API来调用OCR引擎。 JavaCV则是一...

    java调用 人脸识别接口demo

    在本文中,我们将深入探讨如何使用Java调用人脸识别接口,这对于那些正在学习或工作中涉及这一领域的开发者来说是非常有价值的。人脸识别技术已经广泛应用于安全、监控、社交媒体和其他多种场景,而Java作为多平台...

    Java证件自动识别,能快速识别身证信息,行卡信息,驾证信息,行证信息,使用非常方便.zip

    本项目"Java证件自动识别,能快速识别身份证信息,银行卡信息,驾驶证信息,行驶证信息,使用非常方便.zip"提供了一种基于百度文字识别API(OCR)的解决方案。 首先,让我们详细了解一下Java中的证件识别。Java作为...

    车牌识别java代码

    本项目是基于Java语言实现的车牌识别系统,它结合了图像处理和机器学习算法,提供了高效且易于使用的解决方案。 1. **车牌识别的基本流程** - 图像捕获:首先,系统需要获取到包含车牌的图像,这通常通过摄像头或...

    Java OCR 图像智能字符识别-文字识别Demo

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种用于将图像中的文本转换为机器编码文本的方法,尤其在处理纸质文档、扫描件或照片中的文本时非常有用。在这个"Java OCR 图像智能字符识别-文字...

    java身份证自动识别源码

    总之,Java身份证自动识别源码涵盖了图像处理、OCR技术、机器学习模型、数据解析、异常处理、性能优化及安全性等多个方面的知识点,是一套综合性的解决方案。在开发此类系统时,需要综合运用这些知识,以提供高效、...

    java图像运动识别

    Java图像运动识别是一种在计算机视觉领域中的关键技术,它主要用于分析连续的图像序列,检测和跟踪目标物体的运动轨迹。在给定的项目中,通过处理三个连续的图像帧,程序能够确定物体在图像中的移动位置。这个过程...

    java根据卡号识别银行

    在Java编程领域,根据卡号识别银行是一项常见的需求,特别是在金融系统或支付平台的开发中。这个项目包含了一个资源类和一个测试类,用于实现这一功能。资源类通常用来存储和处理与银行卡号相关的数据,而测试类则...

    java-验证码识别-验证码破解

    在这个“java-验证码识别-验证码破解”的主题中,我们将深入探讨如何使用Java进行验证码识别,特别是通过Tess4J库进行OCR(光学字符识别)。 验证码的主要目的是防止自动化的恶意行为,如机器人攻击或垃圾邮件发送...

    java实现人脸识别

    Base64是一种用于在ASCII字符串中表示二进制数据的编码方式,这里的base64字符数据可能包含了预先注册用户的人脸模板。在Java中,我们可以使用`java.util.Base64`类来编码和解码这些数据。 接下来,我们将这些处理...

Global site tag (gtag.js) - Google Analytics