`

(备忘)java.lang.Class类

阅读更多
转自: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)...
分享到:
评论

相关推荐

    2022年初学Java的备忘录Java教程.docx

    ### 2022年初学者Java备忘录知识点解析 #### 一、Java入门环境配置详解 对于初学者而言,正确地配置Java开发环境至关重要。本文档提到了两种不同的操作系统下的环境配置方法:Windows 98 和 Windows 2000。 **1. ...

    Java反射备忘录

    通过`Class.forName()`方法或对象的`getClass()`方法可以获取到`Class`对象,从而获取类的相关信息。 3. 构造器反射:使用`Class`对象的`getConstructors()`或`getConstructor()`方法获取构造器,然后通过`...

    java与模式(含源码)

    Java中的`java.lang.Class`类的`newInstance()`方法就是工厂方法的一个例子。 3. 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。例如,`javax.sql.DataSource`接口可以创建不同...

    Java设计模式(全)

    Java中的`java.lang.Class`和`newInstance()`方法就是其实现。 - **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 - **建造者模式**:将一个复杂对象的构建与其表示分离...

    JBOSS 备忘录 TIPS 操作手册

    %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:...

    java-programming-chapter-interview.zip_java programming

    2. 获取类信息:通过Class类获取类的构造器、方法、字段等信息。 3. 动态代理:使用java.lang.reflect.Proxy实现动态代理。 八、JVM内存管理 1. 内存区域:了解堆、栈、方法区、程序计数器、本地方法栈等区域。 2. ...

    23种设计模式的java实现

    Java中的`java.util.RunnableFuture`类提供了备忘录功能。 20. 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java的`java.util....

    Java的23种设计模式百度云下载链接.rar

    Java中的动态代理(`java.lang.reflect.Proxy`)和Spring AOP都使用了代理模式。 11. **外观模式**:提供一个统一的接口,用来访问子系统中的一组接口。在Java中,JDBC的Connection接口就是一个外观,隐藏了底层...

    JAVA面试题最全集

    1. Class类:理解Class对象的获取与使用,如获取类名、构造器、方法等。 2. 构造函数与方法的反射调用:了解newInstance()、getConstructor()、getMethod()等方法。 3. 动态代理:学习java.lang.reflect.Proxy和...

    超级有影响力霸气的Java面试题大全文档

     java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或...

    design-pattern:使用Java学习设计模式

    在Java中,我们可以使用动态代理(java.lang.reflect.Proxy)或静态代理实现。 4. 观察者模式:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java中...

Global site tag (gtag.js) - Google Analytics