`
yinxiaoyong
  • 浏览: 15787 次
  • 性别: Icon_minigender_1
  • 来自: 湘潭
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于Class Object的获得方法

阅读更多
在使用反射的API时,经常需要取得Class Object类型的值
在这里总结一下取得这种值的几种常用方法:
1.通过getClass()方法取得
这种方式每个Class都具有,因此每个具体的对象都具有该方法
如:
	String str = "abc" ;
	Class c1 = str.getClass() ;
	System.out.println("c1 type name = "+c1.getName()) ;
		
         //注意用int = i 不行,这里需要对象,而不是原生的数据类型
         Integer i = new Integer(3000) ;
	Class c2 = i.getClass() ;
	System.out.println("c2 type name ="+c2.getName()) ;

输出的结果分别是java.lang.String         java.lang.Integer

2.通过getSuperClass()方法
这里应该说是getSuperClass的一种特殊情况吧,也是同样使用于所有Class,注意是Class,通过该方法可以获得给定对象的父类的类型,示例如下:
	String str2 = "abc" ;
	Class c3 = str2.getClass() ;
	Class c4 = c3.getSuperclass() ;
	System.out.println("c4 type name = "+c4.getName()) ;

结果为java.lang.Object

3.通过Class.forName(String msg)来取得msg所代表的对象
在JDBC中我们经常使用Class.forName(DBDRIVER)来获得驱动,这种用法比较常见
其他的象Class.forName("java.lang.String")也是一样的用法

4.通过.class来获得
这主要是适用于具体的Class,这里可以用到原生数据类型如int,前面的getClass()方法则不适用于原生数据类型
用法如下:
	Class c5 = String.class ;
	Class c6 = int.class ;
	Class c7 = int[].class ;	
	Class c8 = Integer.class ;
	System.out.println("c5 type name = "+c5.getName()) ;
	System.out.println("c6 type name = "+c6.getName()) ;
	System.out.println("c7 type name = "+c7.getName()) ;
	System.out.println("c8 type name = "+c8.getName()) ;

输出的结果也分别是相应的类型,这里int属于原生数据类型,是可以用.class这种方法类取得Class类型的,而int[]也属于一种对象,其本身也具有适用.class这种方法取得Class的能力

5.对于原生的数据类型的包装类,通过.TYPE方式
这种适用方式仅限于原生数据类型的包装类,适用方式如下:
	Class c9 = Integer.TYPE ;
	Class c10 = Byte.TYPE ;
	Class c11 = Character.TYPE ;
	System.out.println("c9 type name = "+c9.getName()) ;
	System.out.println("c10 type name = "+c10.getName()) ;
	System.out.println("c11 type name = "+c11.getName()) ;

输出的结果分别是:
c9 type name = int
c10 type name = byte
c11 type name = char
当然,这些原生数据类型的包装类同时也可以用getClass(),.class方法取得相应的Class Object

以上内容希望对大家有所帮助,呵呵
分享到:
评论

相关推荐

    Java常用的反射方法

    代码中包含的方法有如下 : 1. 创建一个Person实体类 2. 反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() ... 5.3 获取所有方法(包含Object的方法)

    Java笔记-通过反射获取注解及Spring中获取某包下的所有class文件

    只需在获取class后调用getAnnotation方法即可,如下 这里是获取JPA映射b表名,Table.class,使用下面这个可以获取表名 import javax.persistence.Table; annotation.name() 这里的item是一个Object,如果是class,...

    JavaScript跨浏览器获取页面中相同class节点的方法

    JavaScript获取页面中class为test的节点 于是收集了一些相关的资料,在本文中列举了两种我觉得比较好的方法,不足之处,还望大家批评指正。如果大家有更好的方法,希望可以分享。 Solution1 Jeremy Keuth方案 Jeremy...

    php中get_object_vars()方法用法实例

    获取$object对象中的属性,组成一个数组 实例: <?php class person{ public $name=王美人; public $age = 25; public $birth; } $p = new person(); print_r(get_object_vars($p)); ?> 输出结果: ...

    urllib方法获取静态页面数据方法

    class BaiduSpider(object): def __init__(self): self.baseurl = "http://tieba.baidu.com/f?" self.headers = {"User-Agent":"Mozilla/5.0 "} #获取页面 def getPage(self,url): req =urllib.request....

    获取已安装程序列表1.2.7

    Get-WmiObject -Class Win32_Product | Select-Object -Property Name > D:\InstalledSoftwareList.txt Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-...

    day021-反射和注解笔记和代码.rar

    所以不能够直接new一个Class对象出来,是通过Class类中的一个方法获取到的。 例如:通过全限定路径类名 2、同一种类型不管通过什么方式得到Class的实例都是相等的;一个类型的字节码对象只有一份,在...

    该仓库为Java进阶部分课堂同步代码.rar

    而synchronized方法则会被翻译成普通的方法调用和返回指令,在VM字节码层面并没有任何特别的指令来实现被synchronized修饰的方法,而是在Class文件的方法表中将该方法的access_flags字段中的synchronized标志位置1,...

    requests方法获取静态页面数据方法

    requests方法获取静态页面数据方法 class NoteSpider(object): def __init__(self): self.url ="http://code.tarena.com.cn" self.headers ={"User-Agent":"Mozilla/5.0"} self.proxies = {...

    PowerShell获取Windows用户列表、用户信息的方法

    Get-WmiObject -Class Win32_UserAccount 或者 Get-WmiObject 代码如下:Win32_UserAccount 如果是想知道查看当前登录的用户的信息,可以用如下语句: 代码如下:Get-WmiObject -Class Win32_UserAccount -Filter ...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside TheC++ Object Model正适合你。 目录: 本立道生(侯捷 译序) 前言(Stanley B.Lippman) 第0章 导读(译者的话) 第1章 关于对象...

    JS获取计算机mac地址以及IP的实现方法

    JS获取计算机mac地址以及IP的实现方法 代码如下://这两个是系统里的ActiveX插件 用来获取ip以及物理地址 <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT> </...

    vs2012获取拖放文件(夹)路径名称之库文件

    Public Class Form1 '先引用此库 '再创建一个实例 Dim sDrag As New getDragFilePathName.DragDropFiles Private Sub Form1_Load(sender ...'获取路径: TextBox1.Text = sDrag.DragDropFiles(0) End Sub End Class

    C# 工厂反射源码

    public static object CreateObject(string AssemblyPath, string ClassNamespace) { object objType = DataCache.GetCache(ClassNamespace);//从缓存读取 if (objType == null) { try { objType = ...

    LuaBind 源码 (Lua增强库)

    的方法去移除它.部分原因是任何剩余的类实例都将依赖其类. 当状态机被关闭的时候,所有 的一切都将被清理干净. LuaBind 的头文件不会直接包含 Lua.h , 而是透过 <luabind/lua_include.hpp> . 如果你 出于某种原因...

    goparse:Go中不完整的解析Rest API抽象

    介绍 这只是对 Rest API的简单且不... ClassObject继承自Object ,并添加一个Save方法发送给Parse,并添加Delete删除该条目。 Save会根据objectId是否存在objectId字段来插入或更新。 它在插入时添加objectId字段。

    Java中反射的常用方法总结

    2.通过类名.class方法,获取对应的Class类对象,通常用于方法的参数类型 Class 类名.class; 3.通过类对象获取对应.class的Class类对象,方法参数,或者说数据类型判断 Class 类对象.getClass(); 2.Constructor 1....

    matlab面向对象编程教程-A Guide to MATLAB Object-Oriented Programming - Register, CRC 2007.rar

    Building on the previous section, it explores inheritance topics and presents the Class Wizard, a powerful MATLAB class generation tool. The final section delves into advanced strategies, including ...

    springmvc-jdbcTemplate

    List, Object>> list = join(condition, orders, classLink); if(list == null) { return null; } List<R> ret = new ArrayList(); for (int i = 0; i (); i++) { ret.add(mapRowMapper.mapRow(list...

    java 反射简单用例

    // //获取类对象的属性 // Field field = clazz.getDeclaredField("name"); // System.out.println(field); // // Method method = clazz.getDeclaredMethod("getName", new Class[]{}); // System.out.println...

Global site tag (gtag.js) - Google Analytics