在使用反射的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
- 浏览 1250
- 评论(0)
- 论坛回复 / 浏览 (0 / 2496)
- 查看更多
相关推荐
### LDAP提示Object Class Violation详解 #### 一、问题背景 在LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)的使用过程中,有时会遇到一个常见的错误提示:“object class violation”。这一...
通过Class类可以获取Class对象,获取Class对象有三种方式:通过Object类的getClass()方法、通过类名.class获取Class对象、通过Class类中的forName()方法。每种方式都有其特点和应用场景,掌握这些方式可以帮助开发者...
6. **getClass()**: 返回对象的运行时类,即对象实际属于的类的`Class`对象,可以用来获取类的信息,如类名、构造器、方法等。 7. **notify()**: 唤醒一个等待在此对象监视器上的线程。线程通过调用`wait()`方法...
你可以通过`Class.forName()`方法或者使用`Class`类的`getClass()`静态方法来获取类对象。类对象允许我们在运行时检查类的特性,比如类的全名、它所包含的成员变量和方法、以及它继承自哪个类。 反射是Java中一个...
本文将详细介绍如何获取`Class`对象的不同方法及其应用场景。 #### Class类简介 `java.lang.Class`是一个特殊的类,它用来封装已经被加载到Java虚拟机(JVM)中的类和接口的信息。每当一个类或者接口被加载到JVM中时...
1. 通过 Class 的 forName(String name) 方法传入一个类的完整类路径,也可以获得Class 对象,但由于使用的是字符串,必须强制转换才可以获取泛型的Class的Class对象,并且你应该考虑到这个方法可能抛出的 ...
标题 "Cannot invoke setId on bean class 'class ' - argument type mismatch - had object" 描述的是一个在使用Spring框架或者类似的依赖注入容器时常见的错误。这个错误通常发生在尝试通过容器设置一个对象属性,...
例如,如果你有一个对象`obj`,你可以通过`obj.getClass()`得到它的Class对象,然后调用`Class`对象的方法来获取类的详细信息。这在设计灵活的代码、处理未知类型的对象或实现通用算法时特别有用。 总的来说,...
Object Pascal支持单继承,即一个类可以继承自另一个类,从而获得其属性和方法。这通过在类声明中指定父类来实现: ```pascal TPerson = class // ... end; TStudent = class(TPerson) // ... end; ``` 在这个...
在Java中,`java.lang.Class` 类提供了获取类属性的方法。要获取类的所有属性(包括public、private、protected以及默认访问权限的属性),可以使用以下代码: ```java Class<?> clazz = Class.forName("全限定...
这段代码首先获取当前选中的CSV文件对象,然后将每个CSV文件的内容读取到ScriptableObject的`content`字段。接着,它将ScriptableObject保存到Resources目录下,并创建一个AssetBundle,这个AssetBundle包含了所有...
总结一下,`Object.getPrototypeOf`是JavaScript中用于获取对象原型的关键工具,它在子类调用父类方法时起到了桥梁的作用。通过理解原型链的工作原理,我们可以更有效地实现继承和代码复用。在实际开发中,正确地...
在Java中,我们可以通过`Class`对象的`getMethod`方法获取到指定的公共方法,然后通过`invoke`方法调用它。例如: ```java Method method = MyClass.class.getMethod("myMethodWithoutArgs"); method.invoke...
代码中包含的方法有如下 : 1. 创建一个Person实体类 2. 反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() ... 5.3 获取所有方法(包含Object的方法)
5. 泛型处理:虽然Class对象本身无法直接提供泛型信息,但可以通过方法或字段的Type对象间接获取。例如,`ParameterizedType`接口提供了对泛型类型参数的访问。 在实际开发中,反射广泛应用于框架、插件系统、序列...
1. 创建或获取ActiveX控件的CLSID(Class ID),这是每个ActiveX控件的唯一标识。 2. 在OBJECT标签中指定控件的CLSID,以及必要时提供备用内容。 3. 使用JavaScript检测浏览器类型和版本,以决定是否尝试加载ActiveX...
该方法返回了 Object 的 Class 对象,表示该对象的实际类型。应用场景:通常用于判断两个引用中实际存储对象类型是否一致。 hashCode() 方法 hashCode() 方法用于获取对象的哈希码值。哈希值根据对象的地址或字符...
通过`java.lang.Class`类的`forName()`方法,我们可以得到类的Class对象。然后,通过`getFields()`或`getDeclaredFields()`方法获取类的所有字段。接下来,遍历这些字段,使用`Field`对象的`get()`方法获取每个字段...
**1.2 Object类的方法** - **`public int hashCode()`**: - 该方法返回对象的哈希码值,通常用来支持数据结构如哈希表的操作。 - 哈希码值是由哈希算法计算得出的一个整数值,与对象的实际内存地址相关联但不等同...
- 在反射中使用,通过`Class`对象可以获取到类的各种属性(如字段、方法等)。 ##### 2. `hashCode()` - **方法签名**:`public native int hashCode();` - **功能**:返回对象的哈希码值。哈希码是用来快速比较...