`
lyy3323
  • 浏览: 88106 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

认识java的Class类

阅读更多
URL:
http://lengkue45pt.blog.163.com/blog/static/1060955772009112394322423/
Class 类是在Java语言中定义一个特定类的实现。一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类。Class类的对象用于表示当前运行的 Java 应用程序中的类和接口。 比如:每个数组均属于一个 Class 类对象,所有具有相同元素类型和维数的数组共享一个Class 对象。基本的 Java 类型(boolean, byte, char, short, int, long, float 和 double) 和 void 类型也可表示为 Class 对象。
以下示例使用 Class 对象显示一个对象的 Class 名:
         void printClassName(Object obj) {
            System.out.println("The class of " + obj +
                               " is " + obj.getClass().getName());
        }


        我们都知道所有的java类都是继承了object这个类,在object这个类中有一个方法:getclass().这个方法是用来取得该类已经被实例化了的对象的该类的引用,这个引用指向的是Class类的对象(呵呵,有点别扭)。我们自己无法生成一个Class对象(构造函数为private),而这个Class类的对象是在当各类被调入时,由 Java 虚拟机自动创建 Class 对象,或通过类装载器中的 defineClass 方法生成。 我们生成的对象都会有个字段记录该对象所属类在CLass类的对象的所在位置。如下图所示:
             
       我们可以把每个Class类的对象当做众多类的代理。而且在每个Class类对象中有会有字段记录他引用的这个类的类加载器。如果该字段为null,表示该类的加载器为bootstrap loader.具体原因见:对于类加载器的认识一文。

我们知道java中有多个加载器,每个加载器能载入多个类,所以只要取得Class类对象,就可利用其getClassLoader()方法取得该类加载器的引用。
      jvm为每种类管理者独一的Class对象。因此我们可以用双等号操作符来比较对象:a1.getClass()==A.class;应该返回的是true。

      forName(String classname)和 forName(String classname,boolean initialze,ClassLoader loader)   方法
      该方法返回给定串名相应的de>Classde> 对象。若给定一个类或接口的完整路径名,那么此方法将试图定位、装载和连接该类。若成功,返回该类对象。否则,抛出 ClassNotFoundException 异常。 例如,下面代码段返回名为de>java.lang.Threadde> 的运行 de>Classde> 描述器。de>Class t = Class.forName("java.lang.Thread") ;  此方法是需要指定类加载器的,当用到仅有一个String参数的forName方法时,Class对象将默认调用当前类加载器作为加载器和将第二参数为 true。第二个参数说明:如果是false时,调用forName方法只是在命令类加载器载入该类,而不初始化该类的静态区块,只有当该类第一次实例化时,静态区块才被调用。当为true时,则载入时就调用静态区块。 de>
getClassLoader()
获取该类的类装载器。
getComponentType()
如果当前类表示一个数组,则返回表示该数组组件的 Class 对象,否则返回 null。
getConstructor(Class[])
返回当前 Class 对象表示的类的指定的公有构造子对象。
getConstructors()
返回当前 Class 对象表示的类的所有公有构造子对象数组。
getDeclaredConstructor(Class[])
返回当前 Class 对象表示的类的指定已说明的一个构造子对象。
getDeclaredConstructors()
返回当前 Class 对象表示的类的所有已说明的构造子对象数组。
getDeclaredField(String)
返回当前 Class 对象表示的类或接口的指定已说明的一个域对象。
getDeclaredFields()
返回当前 Class 对象表示的类或接口的所有已说明的域对象数组。
getDeclaredMethod(String, Class[])
返回当前 Class 对象表示的类或接口的指定已说明的一个方法对象。
getDeclaredMethods()
返回 Class 对象表示的类或接口的所有已说明的方法数组。
getField(String)
返回当前 Class 对象表示的类或接口的指定的公有成员域对象。
getFields()
返回当前 Class 对象表示的类或接口的所有可访问的公有域对象数组。
getInterfaces()
返回当前对象表示的类或接口实现的接口。
getMethod(String, Class[])
返回当前 Class 对象表示的类或接口的指定的公有成员方法对象。
getMethods()
返回当前 Class 对象表示的类或接口的所有公有成员方法对象数组,包括已声明的和从父类继承的方法。
getModifiers()
返回该类或接口的 Java 语言修改器代码。
getName()
返回 Class 对象表示的类型(类、接口、数组或基类型)的完整路径名字符串。
getResource(String)
按指定名查找资源。
getResourceAsStream(String)
用给定名查找资源。
getSigners()
获取类标记。
getSuperclass()
如果此对象表示除 Object 外的任一类, 那么返回此对象的父类对象。
isArray()
如果 Class 对象表示一个数组则返回 true, 否则返回 false。
isAssignableFrom(Class)
判定 Class 对象表示的类或接口是否同参数指定的 Class 表示的类或接口相同,或是其父类。
isInstance(Object)
此方法是 Java 语言 instanceof 操作的动态等价方法。
isInterface()
判定指定的 Class 对象是否表示一个接口类型。
isPrimitive()
判定指定的 Class 对象是否表示一个 Java 的基类型。
newInstance()
创建类的新实例。
toString()
将对象转换为字符串。      
1
0
分享到:
评论

相关推荐

    认识Java的Class类.doc

    Java的Class类是Java反射机制的核心,它代表了Java中的每一个类和接口。Class类的主要功能是提供关于类的信息,包括类的结构、属性、方法等。以下是对Java Class类的详细说明: 1. **Class类对象的创建**:在Java中...

    python实现的简单的class解析以及简单执行class.zip

    首先,Java的Class文件是编译后的Java源代码的二进制表示,它包含了类的结构、方法定义、变量定义等信息。这些信息是用特定的字节码格式存储的,这种格式是Java虚拟机(JVM)能够理解和执行的。Python通过模拟JVM的...

    第一章认识Java.

    ### 认识Java #### Java语言简介与发展历程 Java作为一种重要的编程语言,在计算机科学领域有着广泛的应用。由标题“第一章认识Java”以及描述中的“Java发展”,我们可以从中提炼出关于Java的基本信息及其发展...

    实战java反射机制-让你迅速认识java强大的反射机制

    在"实战java反射机制-让你迅速认识java强大的反射机制"这个主题中,我们将深入探讨反射的核心概念和实际应用。 1. 反射基础: Java反射机制主要基于`java.lang.Class`类和`java.lang.reflect`包中的接口和类。`...

    简单JAVA例程(绝对新手实例)认识JAVA

    这个“简单JAVA例程(绝对新手实例)”的压缩包文件提供了入门级别的Java代码示例,帮助新手逐步认识和了解Java编程。 首先,让我们来探讨Java的基础知识: 1. **Java语法基础**:Java的语法结构与C++类似,但更加...

    Java语言认识训练

    在Java语言认识训练中,初学者会接触到以下几个核心知识点: 1. **Java环境配置**:实验要求熟悉JCreator、Eclipse或NetBeans等集成开发环境(IDE)的安装和使用。这些工具提供了编写、调试和运行Java程序的友好...

    java类的小游戏

    Java 类的小游戏是一种基于Java编程语言开发的简单游戏,它通常由一系列的Java类组成,这些类协同工作来实现游戏的逻辑、用户交互以及图形显示。对于初学者来说,学习和分析这样的小游戏代码是一个很好的实践机会,...

    Java第4章 认识类和对象.含源代码

    在Java编程语言中,类和对象是核心概念,它们构成了面向对象编程的基础。本章将深入探讨这两个概念,以及如何在实际编程中运用它们。源代码的提供将帮助我们更直观地理解这些理论知识。 首先,我们需要理解什么是类...

    1java认识与首个应用程序发布

    3. **Java的基本结构**:Java程序由类(class)组成,这些类可以包含变量(fields)和方法(methods)。主程序通常在`main`方法中启动。 4. ** HelloWorld 示例**:学习Java的起点通常是编写一个简单的“Hello, ...

    JAVA程序设计课件-认识JAVA.pptx

    然后,通过DOS命令行,使用`javac`命令编译源代码,并使用`java`命令运行编译后的类文件。这个过程展示了Java的编译和运行机制。 在Java中,变量是存储数据的基本单元。每创建一个变量,都需要声明其数据类型(如...

    深入探讨 Java 类加载器

    1. **加载**:加载阶段,类加载器找到指定类的字节码,这可以通过读取磁盘上的.class文件或从网络上获取。 2. **验证**:确保字节码符合Java语言规范,不会对JVM造成危害。 3. **准备**:分配内存并初始化静态变量的...

    认识UML类图素java之UML.doc

    **类(Class)** 类是UML类图的基本构建块,它代表了对象的模板。一个类有三个主要部分:类名、属性(attributes)和操作(operations)。属性表示类的内部状态,操作则表示类可以执行的行为。属性和操作前面可以加上...

    java反射深入剖析(推荐)

    总之,Java反射是Java动态性的体现,它为我们提供了对程序运行时的类信息的强大访问能力,同时也要求开发者对其潜在风险有所认识。在理解和掌握了反射的基本原理后,我们可以更加灵活地利用Java进行编程。

    (完整版)Java程序设计任务驱动式教程-任务十五-认识java-applet(applet入门).ppt

    【Java程序设计任务驱动式教程-任务十五-认识Java Applet (Applet入门)】 Java Applet是Java技术的一部分,它允许开发人员创建可以在Web浏览器中运行的小型应用程序,为网页提供动态交互功能。在Java早期,Applet是...

    《JAVA语言程序设计》期末考试试题及答案_java期末考试_java_

    8. **反射机制**:通过Class类获取类的信息,动态创建对象,调用方法,修改字段值。反射是Java的一个强大功能,常用于框架开发。 9. **Java API的使用**:如Math类的数学运算,日期时间API,正则表达式,XML解析等...

    Hello Java的实现

    1. **创建Applet类**:创建一个新的Java类,继承自`java.applet.Applet`,例如`HelloJavaApplet.java`,并重写`paint`方法来绘制输出: ```java import java.awt.Graphics; public class HelloJavaApplet ...

    Java类加载原理浅析

    总的来说,Java类加载原理是Java程序员进阶的必修课,它涉及到了JVM的内部运作机制,深入理解可以帮助我们更好地优化程序性能,解决一些棘手的问题,同时也能让我们对Java平台有更全面的认识。通过阅读相关文章和...

    java认识UML类图元素

    开发Java应用程序时,开发者要想有效地利用统一建模语言(UML),必须...类(Class) 类(图A)是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。

    JavaOO认识Java(共69张PPT).pptx

    3. **编译**:使用javac命令将源代码编译为.class字节码文件。 4. **运行**:通过java命令执行字节码文件。 5. **调试**:使用IDE的调试功能或命令行工具进行代码调试。 6. **打包与部署**:将多个类文件打包成JAR或...

Global site tag (gtag.js) - Google Analytics