首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈 Java 中的 Class 类

于是开始查阅有关反射的博文,但是在学习的过程中,发现 Class 类始终伴随着反射出现。因为多少接触过 Class 类,所以有关反射的代码还是能看懂的,不会影响我学习反射的知识,本就可以直接略过。...在面向对象的语言中,我们擅长将现实世界中的一个实际存在的事物抽象并封装成一个类,并在类中添加相应的成员变量(属性)和方法,然后我们就可以创建该类的对象,该对象持有属于自己的成员变量和方法。...既然万事万物皆对象,那么我们的类是不是对象呢?是的,我们写的每一个类都是对象,是 java.lang.Class 类的对象。也就是说,每一个类既有自己的对象,同时也是 Class 类的对象。...loader) { classLoader = loader; } 根据注释可知,Class 类的构造方法是私有的,只有 Java 虚拟机可以创建该类的对象,因此我们无法在代码中显式地声明一个...但是,我们依然可以通过其他方式得到 Class 类的对象 如果我们的程序中没有 OtherClass 这个类,使用 Class.forName() 动态加载时,在程序编译时刻是不会报错的,只有在运行时刻检测到没有该类才会出错

29810

JAVA中类的public class与class的区别详解

大家好,又见面了,我是你们的朋友全栈君。 ##1.类的访问权限 为了控制某个类的访问权限,修饰词必须出现在关键字class之前。...例如:public class Student {} 在编写类的时候可以使用两种方式定义类: (A)public class定义类 (B)class定义类 ##2.public class定义类...如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。...class进行了声明,则作为启动类的名称可以与文件名称不一致,但是执行的时候肯定执行的是生成后的名称。...**总的来说,一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。

93010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java Class类简介

    Class类的实例表示java应用运行时的类(class and enum)或接口(interface and annotation)(每个java类运行时都在JVM里表现为一个class对象,可通过类名...数组同样也被映射为为class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。...三,Class的主要方法 Class类的方法还是挺多的。主要是用于得到运行时类的相关信息(可用于反射)。 重要的几个方法: 1, public static Class中动态加载驱动程序:class.forName(sqlDriver); 2,public T newInstance() :根据对象的class新建一个对象,用于反射。...重要 5,public native Class getSuperclass():获取类的父类,继承了父类则返回父类,否则返回java.lang.Object。返回Object的父类为空-null。

    35110

    python中类(class)

    面向对象有两个核心的概念 类:是一群具有相同特征或行为的事物的一个统称,类是抽象的,不能直接使用 对象:由类创造出来的具体存在 在开发中,应该先有类再有对象 类和对象的关系 类是模板,对象是根据这个模板创建出来的...,出现的名词,通常就是找到的类 属性和方法的确定 对 对象的特征描述,通常可以定义成属性 对象具有的行为(动词),通常可以定义为方法 提示:需求中没有涉及的属性或方法在设计类时,不需要考虑 """ "...print('我可以说日语') def call(self): print('这是我写的方法') kt = Tom() # 如果子类中,重写了父类的方法 # 在运行中,只会调用在子类中重写的方法而不会调用父类的方法...,不推荐使用 在python3.X中定义的类时,如果没有指定父类,会默认使用object作为基类--python3.x中定义的类都是新式类 在python2.x中定义类时,如果没有指定父类,则不会以object...---类对象 在程序运行的时候,类对象(创建实例对象的模板)在内存中只有 一份,通过它可以创建出和很多个对象实例 除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法 1.类属性 2.类方法

    53620

    Java中Class类详解、用法及泛化

    Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI。这项信息纪录了每个对象所属的类。...说白了就是: Class类也是类的一种,只是名字和class关键字高度相似。Java是大小写敏感的语言。...Class类的对象内容是你创建的类的类型信息,比如你创建一个shapes类,那么,Java会生成一个内容是shapes的Class类的对象 Class类的对象不能像普通类一样,以 new shapes(...) 的方式创建,它的对象只能由JVM创建,因为这个类没有public构造函数 Class类的作用是运行时提供或获得某个对象的类型信息,和C++中的typeid()函数类似。...我们自己无法生成一个Class对象(构造函数为private),而 这个Class类的对象是在当各类被调入时,由 Java 虚拟机自动创建 Class 对象,或通过类装载器中的 defineClass

    5.5K60

    JS中Class类的详解

    大家好,又见面了,我是你们的朋友全栈君。 概述     在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。...严格模式     类和模块的内部,默认就是严格模式,所以不需要使用 use strict 指定运行模式 类的声明 定义一个类的一种方法是使用一个类声明,即用带有class关键字的类名(这里是“Rectangle...= y } } Person() // TypeError Class constructor Person cannot be invoked without 'new' 类表达式(类定义) 类表达式可以是被命名的或匿名的...toString() { console.log(this.x + ', ' + this.y) } } 注意: 在类中声明方法的时候,方法前不加 function 关键字...方法之间不要用逗号分隔,否则会报错 类的内部所有定义的方法,都是不可枚举的(non-enumerable) 一个类中只能拥有一个 constructor 方法 静态方法     静态方法可以通过类名调用

    4.4K10

    Java 反射 (二) Class类

    二.Class 类 1.基本介绍 Class 也是类,因此也继承 Object 类 Class 类对象不是 new 出来的,而是系统创建的 //(1)传统new对象 /*...cls1 = Class.forName("com.gbx.Cat"); 对于某个类的 Class 类对象,在内存中只有一份,因为类只加载一次 Class cls2 = Class.forName...()); 每个类的实例都会记得自己是由哪个 Class 实例所生成 通过 Class 可以完整地得到一个类的完整结构,通过一系列 API Classi 对象是存放在堆的 类的字节码二进制数据,是放在方法区的...>表示不确定的Java类型 ClassClass.forName("java.lang.Cat")应用场景:多用于配置文件,读取类全路径,加载类 2.前提:若已知具体的类,通过类的 class 获取,该方式最为安全可靠,程序性能最高实例:

    43820

    JAVA Class类与反射

    Class类与Class对象 Class对象是Class类的实例,类至少包含以下信息,因此class类又可以被 解构为如下部分: 权限修饰符 类名 参数化类型(泛型信息) 接口Interface 注解Annotation...比如 Method类: Field类: Constructor类: 也就是说,Class类准备了很多东西来标识一个.class文件的信息,并写了三个类,Method,Fileld,Constructor...比如: 也就是说,Class类准备了很多字段用来表示一个.class文件的信息,对于字段、方法、构造器等,为了更详细地描述这些重要信息,还写了三个类,每个类里面都有很详细的对应 理解反射API 没啥好说的...,在日常开发中反射最终目的主要两个: 创建实例 反射调用方法 创建实例的难点在于,很多人不知道clazz.newInstance()底层还是调用Contructor对象的newInstance()。...也就是说我们在.java文件中写的方法,被“解构”以后存入了Method对象中。所以对象本身是一个方法的映射,一个方法对应一个Method对象。 对象的本质就是用来存储数据的。

    41430

    Python中类(Class)使用

    在Python中所有数据类型都可以被视为对象,而类(Class)是用来描述具有相同的属性和方法的对象的集合,所有它定义了每个集合中对象所共有的属性和方法。...0 引言 在Python学习中,类(Class)是面向对象最重要的概念之一。通过对类(Class)知识的学习能使初学者对面向对象编程(oop)有更深一步的理解。...1、定义类使用class关键字,class后面紧接类名,类名通常以大写开头的单词(无类继承时类名后括号可以选择不添加)。...class Student(object):#完成对类的定义 2、进入类定义时,就会创建一个新的命名空间,并把它用作局部作用域,因此函数定义会绑定到这个局部作用域中。...,使用类(class)和if语句,通过学生姓名进行成绩等级判定实验,实验对类(class)的基本运用。

    97010

    java.lang.Class类详解

    一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类。Class类的对象用于表示当前运行的 Java 应用程序中的类和接口。...在java中,每个类都有一个相应的Class对象。也就是说,当编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。...而java中的Class类对象是可以人工自然性的(也就是说开放的)得到的(虽然你无法像其他类一样运用构造器来得到它的实例,因为Class对象都是jvm产生的。...中,主要由以下类来实现Java反射机制,这些类(除了第一个)都位于java.lang.reflect包中: Class类:代表一个类,位于java.lang包下 Field类:代表类的成员变量(成员变量也称为类的属性...而数组等组合型数据类型也是会生成一个Class对象的,而且更令人惊讶的是,java中数组的本来面目其实就是某个类,惊讶中的惊讶是,含有相同元素的相同维数的数组还会共同享用同一个Class对象!

    42910

    Java 类机制(1)---- 初识 Class

    ,才发现这一切都归功于 Java 中的一个概念:类。...而 Java 中的类就是被虚拟机加载并解析成 Class 对象放进 方法区 中的。这样做很明显的一个好处是节省虚拟机内存,即只有用到了某个类才加载它。...翻译过来即为:Class 的实例代表了在一个运行中的 Java 程序中的类和接口。即首先它是一个类,第二它是用来描述类和接口的,那么其就是一个用来描述类的类。...; 其实虚拟机在执行这段代码对应的字节码(Java 代码在编译的时候被翻译成字节码,类似于汇编)的时候,虚拟机看到 Object.class 的时候,就会去加载 Object 类的类对象到方法区中,因为...Object 类是一切 Java 类的父类,因此 Object 类的类对象也是第一个被加载进入虚拟机中的。

    95520

    Java反射Class类与类动态载

    Class类,类类型的概念 12 在面向对象的世界中,万事万物皆对象。...Java语言中,静态的成员,类是对象,类是Java.lang.class的实例对象 如何表示 三种表示方式 12345678910111213 //1.实例在告诉我们任何一个类都有一个隐含的静态成员变量...c5 = void.class; 表达了void这个类的类类型getName为这个类的类类型的具体名称 c1.getName ---> intc2.getName ---> java.lang.String...java.lang.reflect.field Field类封装了关于成员变量的操作 getFields()方法获取的是所有public的成员变量的信息 getDeclaredFields获取的是该类自己声明的成员变量的信息...(fieldName); } } 构造函数的类类型 构造函数是对象,java.long.Constructor 封装了构造函数的信息方法 getConstructors() 获取所有public

    81930

    《Java核心技术》 Class类文件结构开篇Class类文件结构

    在上面的例子中,下面的Java汇编代码是通过: javap -c HelloWorld.class 进行反汇编得到的。...Class类文件结构 class文件的结构 简单讲,jvm的class文件是针对jvm的私家定制。只要运行在jvm上byte code,都需要按照class文件format来。否则jvm解析不了。...官网文档: The Java Virtual Machine class file format class文件时java虚拟机执行引擎的数据入口,也是java技术体系的基础支柱之一,了解class文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义...class文件是一组以八位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有添加任何分隔符,这使得整个class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在...文件中,类的全限定名、字段、方法都是使用CONSTANT_Utf8_info类型常量来描述名称,而该常量的长度由2个字节表示,所以类的全限定名、字段名、方法名的最大长度不能超过2个字节所能表示的最大整数

    60630

    java class类文件「建议收藏」

    根据 Java 虚拟机规范,类文件由单个 ClassFile 结构组成: ClassFile { u4 magic; //Class 文件的标志...高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。...,除了 java.lang.Object 之外,所有的 java 类都有父类,因此除了 java.lang.Object 外,所有 Java 类的父类索引都不为 0。...)用于描述接口或类中声明的变量。...与 Class 文件中其它的数据项目要求的顺序、长度和内容不同,属性表集合的限制稍微宽松一些,不再要求各个属性表具有严格的顺序,并且只要不与已有的属性名重复,任何人实现的编译器都可以向属性表中写 入自己定义的属性信息

    43730

    Java 反射理解(一)-- Class 类的使用

    概念 这里阐述几个基本概念: 在面向对象的世界里,万事万物皆对象。(在 Java 语言中,静态的成员、普通数据类型除外) 类也是对象,类是 java.lang.Class 的实例对象。...类类型是什么? 类类型可以简单理解为类的类型。在万物皆对象的 Java 中,我们定义的每个类都是 java.lang.Class 类的一个对象,该对象就是该类的类类型,即 Class 对象。...得到 Class对象有三种方法: 已知类名 (类名.class) 已知类对象(对象.getClass()) Class 类(类类型)中提供一个叫做 forName 的方法(Class.forName(...c3 表示了 Foo 类的类类型(class type),一个类只可能是Class类的一个实例对象,即 c1 = c2 = c3,三次得到的Class对象都是同一个 /.../第一种表示方式 ---> 实际在告诉我们任何一个类都有一个隐含的静态成员变量class Class c1 = Foo.class; //第二中表达方式

    61320

    java类的class文件字节码解析

    需要注意的是,在java中,高版本的JDK能够向下兼容低版本的jdk。...ACC_PUBLIC, ACC_SUPER 2.2.4 类索引、父类索引和接口索引集合 在class文件中,将用这三项来标识类的继承关系。...索引项 长度 说明 this_class 2个字节 类索引,用于确定这个类的全限定名 super_class 2个字节 父类索引,用于确定这个类父类的全限定名(Java语言不允许多重继承,故父类索引只有一个...用来描述这个类实现了哪些接口,这些被实现的接口将按implements语句(如果该类本身为接口,则为extends语句)后的接口顺序从左至右排列在接口的索引集合中 this_class、super_class...的内容,#12 即常量池中的HelloByteCode.java 这个类属性值表示的内容为: SourceFile: "HelloByteCode.java" 至此,我们完整解析了class类的字节码

    88920
    领券