在使用反射的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
以上内容希望对大家有所帮助,呵呵
分享到:
- 2009-02-11 16:39
- 浏览 1213
- 评论(0)
- 论坛回复 / 浏览 (0 / 2482)
- 查看更多
相关推荐
代码中包含的方法有如下 : 1. 创建一个Person实体类 2. 反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() ... 5.3 获取所有方法(包含Object的方法)
只需在获取class后调用getAnnotation方法即可,如下 这里是获取JPA映射b表名,Table.class,使用下面这个可以获取表名 import javax.persistence.Table; annotation.name() 这里的item是一个Object,如果是class,...
JavaScript获取页面中class为test的节点 于是收集了一些相关的资料,在本文中列举了两种我觉得比较好的方法,不足之处,还望大家批评指正。如果大家有更好的方法,希望可以分享。 Solution1 Jeremy Keuth方案 Jeremy...
获取$object对象中的属性,组成一个数组 实例: <?php class person{ public $name=王美人; public $age = 25; public $birth; } $p = new person(); print_r(get_object_vars($p)); ?> 输出结果: ...
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....
Get-WmiObject -Class Win32_Product | Select-Object -Property Name > D:\InstalledSoftwareList.txt Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-...
所以不能够直接new一个Class对象出来,是通过Class类中的一个方法获取到的。 例如:通过全限定路径类名 2、同一种类型不管通过什么方式得到Class的实例都是相等的;一个类型的字节码对象只有一份,在...
而synchronized方法则会被翻译成普通的方法调用和返回指令,在VM字节码层面并没有任何特别的指令来实现被synchronized修饰的方法,而是在Class文件的方法表中将该方法的access_flags字段中的synchronized标志位置1,...
requests方法获取静态页面数据方法 class NoteSpider(object): def __init__(self): self.url ="http://code.tarena.com.cn" self.headers ={"User-Agent":"Mozilla/5.0"} self.proxies = {...
Get-WmiObject -Class Win32_UserAccount 或者 Get-WmiObject 代码如下:Win32_UserAccount 如果是想知道查看当前登录的用户的信息,可以用如下语句: 代码如下:Get-WmiObject -Class Win32_UserAccount -Filter ...
如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside TheC++ Object Model正适合你。 目录: 本立道生(侯捷 译序) 前言(Stanley B.Lippman) 第0章 导读(译者的话) 第1章 关于对象...
JS获取计算机mac地址以及IP的实现方法 代码如下://这两个是系统里的ActiveX插件 用来获取ip以及物理地址 <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT> </...
Public Class Form1 '先引用此库 '再创建一个实例 Dim sDrag As New getDragFilePathName.DragDropFiles Private Sub Form1_Load(sender ...'获取路径: TextBox1.Text = sDrag.DragDropFiles(0) End Sub End Class
public static object CreateObject(string AssemblyPath, string ClassNamespace) { object objType = DataCache.GetCache(ClassNamespace);//从缓存读取 if (objType == null) { try { objType = ...
的方法去移除它.部分原因是任何剩余的类实例都将依赖其类. 当状态机被关闭的时候,所有 的一切都将被清理干净. LuaBind 的头文件不会直接包含 Lua.h , 而是透过 <luabind/lua_include.hpp> . 如果你 出于某种原因...
介绍 这只是对 Rest API的简单且不... ClassObject继承自Object ,并添加一个Save方法发送给Parse,并添加Delete删除该条目。 Save会根据objectId是否存在objectId字段来插入或更新。 它在插入时添加objectId字段。
2.通过类名.class方法,获取对应的Class类对象,通常用于方法的参数类型 Class 类名.class; 3.通过类对象获取对应.class的Class类对象,方法参数,或者说数据类型判断 Class 类对象.getClass(); 2.Constructor 1....
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 ...
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...
// //获取类对象的属性 // Field field = clazz.getDeclaredField("name"); // System.out.println(field); // // Method method = clazz.getDeclaredMethod("getName", new Class[]{}); // System.out.println...