`

java反射详解(一)_Class类

    博客分类:
  • java
 
阅读更多

Class类

Java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则是由这个类的实例对象来确定的,不同的实例对象有不同的属性值。Java程序中的各个Java类,它们是否属于同一类事物,是不是可以用一个类来描述这类事物呢?这个类的名字就是Class,要注意与小写class关键字的区别哦。Class类描述了哪些方面的信息呢?类的名字,类的访问属性,类所属于的包名,字段名称的列表、方法名称的列表,等等。学习反射,首先就要明白Class这个类。

Person类代表人,它的实例对象就是张三,李四这样一个个具体的人, Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class

àPerson

JavaàClass

 

Class类代表Java类,它的各个实例对象又分别对应什么呢?

对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码,等等。

一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的,所以它们在内存中的内容是不同的,这一个个的空间可分别用一个个的对象来表示,这些对象显然具有相同的类型,这个类型是什么呢?

 

如何得到各个字节码对应的实例对象(Class类型)

1.        类名.class,例如,System.class

2.        对象.getClass(),例如,new Date().getClass()

3.        Class.forName("类名"),例如,Class.forName("java.util.Date");

 

九个预定义Class实例对象:

基本的 Java 类型(booleanbytecharshortintlongfloat 和 double)和关键字 void 也表示为Class 对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Test
public void test() throws Exception {
    String str = "abc";
    Class cls1 = str.getClass();
    Class cls2 = String.class;
    Class cls3 = Class.forName("java.lang.String");
    System.out.println(cls1==cls2);
    System.out.println(cls1==cls3);
      
    System.out.println(cls1.isPrimitive());
    System.out.println(int.class.isPrimitive());
    System.out.println(int.class==Integer.class);
    System.out.println(int.class==Integer.TYPE);
    System.out.println(int[].class.isPrimitive());
    System.out.println(int[].class.isArray());
}
true
true
false
true
false
true
false
true

总之,只要是在源程序中出现的类型,都有各自的Class实例对象,例如,int[],void…

 

本文链接:java反射详解(一)_Class类,由huangyineng原创,转载请注明出处

分享到:
评论

相关推荐

    java反射详解

    ### Java反射机制详解 #### 一、引言 Java反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地访问类的信息,并能够直接操作这些类的对象。这种能力对于许多开发框架(如Spring)来说至关重要,因为...

    Java开发详解.zip

    031502_【第15章:Java反射机制】_Class类的使用笔记.pdf 031503_【第15章:Java反射机制】_反射应用——取得类的结构笔记.pdf 031504_【第15章:Java反射机制】_Java反射机制的深入研究笔记.pdf 031505_【第15章:...

    java反射详解例子

    "java反射机制详解" Java 反射机制是 Java 语言中的一种功能,它允许程序员在运行时检查和修改一个类的结构和行为。 Java 反射机制提供了一种获取类的信息、创建对象、调用方法和获取字段值的方式。 在 Java 中,...

    JAVA 反射详解PPT

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。通过反射,我们可以动态地创建对象、访问和修改字段、调用方法,甚至执行私有方法和访问包内可见的元素。...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    JAVA反射详解

    ### JAVA反射详解 Java反射是Java编程语言的一个强大特性,允许程序在运行时检查和操作类、接口、字段和方法等。本文章旨在深入解析Java反射机制,包括其原理、应用以及常见用法。 #### 了解Class对象 在Java中,...

    java 反射机制详解

    Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...

    java反射原理详解

    Java反射机制是Java语言的一种强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包中的类(如Constructor、Method、Field)以及...

    java反射机制详解与应用

    Java反射机制是Java语言的一项强大功能,它允许程序在运行时动态地获取类的信息并操作类的对象。这一特性使得Java具有高度的灵活性和强大的扩展性,尤其是在开发框架和库时,反射机制起到了至关重要的作用。本文将...

    JAVA反射机制详解视频

    (类的加载概述和加载时机) (类加载器的概述和分类) (获取class文件对象的三种方式) ...(通过反射写一个通用的设置某个对象的某个属性为指定的值) (通过用户的增删改查和学生的登录注册引出中介) (动态代理的概述和实现)

    Java中通过Class类获取Class对象的方法详解

    "Java中通过Class类获取Class对象的方法详解" Java中获取Class对象是Java基础知识中的一个重要部分,通过Class类可以获取Class对象,Class对象是Java虚拟机在加载类时自动构造的。下面将详细介绍通过Class类获取...

    Java反射详解.pdf

    在Java中,反射主要是通过java.lang.reflect包下的Class类来实现的。 在上述内容中,首先介绍了通过反射获取类的信息的基本概念。然后,通过多个具体的代码示例,来展示如何在Java程序中应用反射机制。 案例1演示...

    Java 反射详解

    Java反射是Java编程语言中的一个强大特性,它允许运行时的程序访问并操作类、接口、字段和方法等对象,即使这些对象在编译时并未被明确地引用。这一特性使得Java具有高度的动态性,使得代码能够在运行时检查类的信息...

    Java Reflection (JAVA反射)详解

    Java 反射(Java ...总结起来,Java反射提供了一种强大的机制,允许在运行时检查和修改程序的行为。它可以用于创建通用工具、动态代理、元编程等多种场景,但同时也需要谨慎处理,以避免可能的安全和性能问题。

    java反射详解1

    Java反射是Java语言的一个强大特性,它允许程序在运行时动态地获取类的信息(如类名、方法、字段等)并进行操作。反射在许多场景下都非常有用,例如在框架开发、插件系统、序列化、动态代理等方面。本文将通过三个...

    JAVA反射机制详解

    `Class`类是Java反射机制的核心,它代表了一个类的类型。可以通过以下几种方式获取`Class`实例: - 使用`.class`关键字:如`String.class`。 - 使用`Class.forName()`方法:如`Class.forName("java.lang.String")`...

Global site tag (gtag.js) - Google Analytics