Java中的Class类以及获取Class对象的三种方式
来源:互联网 发布:侧卧按键开关封装淘宝 编辑:程序博客网 时间:2024/06/06 00:15
Java中的Class类以及获取Class对象的三种方式
java.lang.Class
之前Hadoop里面job.setMapperClass(Map.class)
之类的方法用到了 xxx.class
的写法,当时也没有深究。这两天又遇到了xxx.getClass()
的写法,稍微看了一下。
java API里这样写道:
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
每个类在编译后都会产生一个Class对象,被保存在同名.class文件中。运行时,类加载器检查所需的类的Class对象是否已经加载,如果没有,就从.class文件中加载该类的Class对象,然后用该Class对象创建该类的所有对象。
获得一个Class对象
className.class
形如className.class,我们称之为类字面常量
。
Class c = java.awt.Button.class;Class c = Integer.TYPE;
注意:
TYPE用于基本数据类型的包装器类。TYPE字段是一个引用,指向对应的基本数据类型的Class对象。所以:
boolean.class 等价于 Boolean.TYPEchar.class 等价于 Char.TYPE......
instanceName.getClass()
java.lang.Object
类的getClass()
方法返回此时Object的Runtime类。
故而在可以获得实例的情况下,可以使用该方法:
Class c = instanceName.getClass();
如:
TextField t = new TextField(); Class c = t.getClass();Class s = c.getSuperclass();
Class.forName(String className)
Class.forName(str)
返回与带有给定字符串名的类或接口相关联的 Class 对象。 要求str为所需类的完全限定名。
如:
Class c1 = Class.forName (“java.lang.String”);
String str = “java.awt.Button”;
Class c2 = Class.forName (str);
Class c3 = Class.forName (“java.util.LinkedList$Entry”);
同时forName()方法要求必须catch异常 ClassNotFoundException。
如下例子程序:
import java.awt.Button;public class Test { public static void main(String[] args) { String str = "java.awt.Button"; try { Class c2 = Class.forName(str); System.out.println(c2.getName()); } catch(Exception e) { } }}
Reference
- 获得一个 Class 对象
- Thinking in Java
- Java中的Class类以及获取Class对象的三种方式
- Java Class类以及获取Class实例的三种方式
- Java Class类以及获取Class实例的三种方式
- 获取Class对象的三种方式
- 获取Class对象的三种方式
- 获取Class对象的三种方式
- 获取Class对象的三种方式
- Java基础之获取Class对象的三种方式
- java 反射之获取class对象的三种方式
- java反射之获取class对象的三种方式
- JAVA获取class的三种方式
- java获取Class的三种方式
- 获取Class对象的三种获取方式:
- 深入理解java.lang.Class类以及class类获取实例的三种方法
- 反射获取class对象的三种方式
- 反射中获取class对象的三种方式
- 反射概念:获取class文件对象的三种方式
- 获取Class字节码对象的三种方式
- jmeter使用2-springmvc request
- 25465413214654
- Backbone.js源码分析系列之Collection模块
- 黑马程序员--高新技术(内省)
- 是发个V大分还不
- Java中的Class类以及获取Class对象的三种方式
- Codeforces Round #260 (Div. 2) C. Boredom
- codeforces 455A Boredom dp
- FZU 1876 组合数学
- 在Linux中创建静态库.a和动态库.so
- jplogic 开发案例(FMS流媒体服务集成) 之 视频会议管理 (多人互动呼叫-应答模式视频会议含共享白板)
- 【2014】教你如何高效背单词最新方法
- 海量数据处理:十道面试题与十个海量数据处理方法总结
- 如何用好你的最佳学习时间段