- 浏览: 16773 次
- 性别:
- 来自: 杭州
最新评论
转自:http://lavasoft.blog.51cto.com/62575/15433
一、如何得到Class的对象呢?有三种方法可以的获取:
1、调用Object类的getClass()方法来得到Class对象,这也是最常见的产生Class对象的方法。例如:
MyObject x;
Class c1 = x.getClass();
2、使用Class类的中静态forName()方法获得与字符串对应的Class对象。例如:
Class c2=Class.forName("MyObject"),Employee必须是接口或者类的名字。
3、获取Class类型对象的第三个方法非常简单。如果T是一个Java类型,那么T.class就代表了匹配的类对象。例如
Class cl1 = Manager.class;
Class cl2 = int.class;
Class cl3 = Double[].class;
注意:Class对象实际上描述的只是类型,而这类型未必是类或者接口。例如上面的int.class是一个Class类型的对象。
二、Class类的常用方法
1、getName()
一个Class对象描述了一个特定类的属性,Class类中最常用的方法getName以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
2、newInstance()
Class还有一个有用的方法可以为类创建一个实例,这个方法叫做newInstance()。例如:
x.getClass.newInstance(),创建了一个同x一样类型的新实例。newInstance()方法调用默认构造器(无参数构造器)初始化新建对象。
3、getClassLoader()
返回该类的类加载器。
4、getComponentType()
返回表示数组组件类型的 Class。
5、getSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。
6、isArray()
判定此 Class 对象是否表示一个数组类。
三、Class的一些使用技巧
1、forName和newInstance结合起来使用,可以根据存储在字符串中的类名创建对象。例如
Object obj = Class.forName(s).newInstance();
2、虚拟机为每种类型管理一个独一无二的Class对象。因此可以使用==操作符来比较类对象。例如:
if(e.getClass() == Employee.class)...
一、如何得到Class的对象呢?有三种方法可以的获取:
1、调用Object类的getClass()方法来得到Class对象,这也是最常见的产生Class对象的方法。例如:
MyObject x;
Class c1 = x.getClass();
2、使用Class类的中静态forName()方法获得与字符串对应的Class对象。例如:
Class c2=Class.forName("MyObject"),Employee必须是接口或者类的名字。
3、获取Class类型对象的第三个方法非常简单。如果T是一个Java类型,那么T.class就代表了匹配的类对象。例如
Class cl1 = Manager.class;
Class cl2 = int.class;
Class cl3 = Double[].class;
注意:Class对象实际上描述的只是类型,而这类型未必是类或者接口。例如上面的int.class是一个Class类型的对象。
二、Class类的常用方法
1、getName()
一个Class对象描述了一个特定类的属性,Class类中最常用的方法getName以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
2、newInstance()
Class还有一个有用的方法可以为类创建一个实例,这个方法叫做newInstance()。例如:
x.getClass.newInstance(),创建了一个同x一样类型的新实例。newInstance()方法调用默认构造器(无参数构造器)初始化新建对象。
3、getClassLoader()
返回该类的类加载器。
4、getComponentType()
返回表示数组组件类型的 Class。
5、getSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。
6、isArray()
判定此 Class 对象是否表示一个数组类。
三、Class的一些使用技巧
1、forName和newInstance结合起来使用,可以根据存储在字符串中的类名创建对象。例如
Object obj = Class.forName(s).newInstance();
2、虚拟机为每种类型管理一个独一无二的Class对象。因此可以使用==操作符来比较类对象。例如:
if(e.getClass() == Employee.class)...
发表评论
-
开发工具备忘
2014-06-19 23:41 3821.谷歌公司的:guava; 2.apache公司的:Co ... -
java.util.date
2014-06-17 21:58 384<div class="iteye-blo ... -
(转) spring 的jar各包作用
2014-06-01 15:03 466转自:http://blog.csdn.net/c ... -
(转)Hibernate 的jar各包作用
2014-06-01 15:02 354转自:http://blog.csdn.net/cailian ... -
(转)CyclicBarrier介绍
2014-05-28 08:17 504转自:http://www.iteye.com/topic/9 ... -
(转)Callable,Runnable比较及用法
2014-05-27 13:53 534转自:http://murielily.blog. ... -
(转)java Future 接口介绍
2014-05-27 13:52 480转自:http://blog.csdn.net/yangyan ... -
9_(JAVA基础300集最全教程 学习)自动装箱和拆箱
2014-05-16 00:08 597在JDK5.0中新增了自动装箱和拆箱,为开发人员解决了很多 ... -
8_(JAVA基础300集最全教程 学习)Collectioin各容器实现方式
2014-05-15 23:01 3741.ArrayList : 实现方式(非可序化Object数组 ... -
(转)java关键字Transient
2014-05-15 22:52 422转自:http://horst.sun.blog.163.co ... -
(转)Java使用JDBC连接Oracle_MSSQL实例
2014-05-14 23:20 490转自:http://blog.csdn.net/tungkee ... -
ant入门
2014-05-14 23:07 507这几天忙着看项目中的 ... -
(备忘)native2ascii转码工具使用
2014-05-10 21:49 397native2ascii简介:native2ascii是sun ... -
(转)java.lang.Object类
2014-05-10 21:49 1671转自:http://lavasoft.blog.51cto.c ... -
(备忘录)xml文件的生成和解析_JDOM_4
2014-05-09 14:45 450import java.io.FileNotFou ... -
(备忘录)xml文件的生成和解析_DOM4J_3
2014-05-09 13:58 356import java.io.File; import ... -
(备忘录)xml文件的生成和解析_SAX_2
2014-05-09 11:51 460一边加载一边解析,速度快,内存占用小,但是如果再次使用时需要再 ... -
(转)J2EE十三个规范
2014-05-09 09:48 406转自:http://www.ibm.com/developer ... -
(备忘录)xml文件的生成和解析_DOM_1
2014-05-09 09:25 733xml的解析一般分为两种方式,一种是SAX事件流的方式,另外一 ... -
7_(JAVA基础300集最全教程 学习)方法重载overload
2014-05-08 22:23 461方法重载指的是同样一个方法的多种实现方式,例如我有个加法计算方 ...
相关推荐
### 2022年初学者Java备忘录知识点解析 #### 一、Java入门环境配置详解 对于初学者而言,正确地配置Java开发环境至关重要。本文档提到了两种不同的操作系统下的环境配置方法:Windows 98 和 Windows 2000。 **1. ...
通过`Class.forName()`方法或对象的`getClass()`方法可以获取到`Class`对象,从而获取类的相关信息。 3. 构造器反射:使用`Class`对象的`getConstructors()`或`getConstructor()`方法获取构造器,然后通过`...
Java中的`java.lang.Class`类的`newInstance()`方法就是工厂方法的一个例子。 3. 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。例如,`javax.sql.DataSource`接口可以创建不同...
Java中的`java.lang.Class`和`newInstance()`方法就是其实现。 - **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 - **建造者模式**:将一个复杂对象的构建与其表示分离...
%JBOSS_HOME%\bin\JavaService.exe install JBoss %Java_Home%\jre\bin\server\jvm.dll -Djava.class.path="%JBOSS_HOME%\bin\run.jar;%JAVA_HOME%\lib\tools.jar" -Xms512m -Xmx1024m -XX:MaxNewSize=256m -XX:...
2. 获取类信息:通过Class类获取类的构造器、方法、字段等信息。 3. 动态代理:使用java.lang.reflect.Proxy实现动态代理。 八、JVM内存管理 1. 内存区域:了解堆、栈、方法区、程序计数器、本地方法栈等区域。 2. ...
Java中的`java.util.RunnableFuture`类提供了备忘录功能。 20. 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java的`java.util....
Java中的动态代理(`java.lang.reflect.Proxy`)和Spring AOP都使用了代理模式。 11. **外观模式**:提供一个统一的接口,用来访问子系统中的一组接口。在Java中,JDBC的Connection接口就是一个外观,隐藏了底层...
1. Class类:理解Class对象的获取与使用,如获取类名、构造器、方法等。 2. 构造函数与方法的反射调用:了解newInstance()、getConstructor()、getMethod()等方法。 3. 动态代理:学习java.lang.reflect.Proxy和...
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或...
在Java中,我们可以使用动态代理(java.lang.reflect.Proxy)或静态代理实现。 4. 观察者模式:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java中...