一、 什么是类型类

Java 中的每一个类(.java 文件)被编译成 .class 文件的时候,Java虚拟机(JVM)会为这个类生成一个类对象(我们姑且认为就是 .class 文件),这个对象包含了这个类全部的信息,包括成员属性、方法、构造器等。往后,如果你要实例化或创建一个对象的时候,都是以这个对象(.class)文件为蓝图进行创建。这个类对象就是我们指的类型类。

二、 创建一个对象

例如下方创建一个Test类的对象

1.  Class<?> testTemplet = Class.forName(“Keywords (包名)+Test”);

testTemplet 就是Java在编译  Test.java  文件时生成的类的类对象

2. 我们平时会用下面这个方法来实例化或创建一个类的对象

Test t = new Test();

其实在这其中,实例化对象 t 就是以testTemplet为模板创建的

3.  上面创建一个实例的方法实际上就相当于

   t = testTemplet.newInstance()

t 是 testTemplet 的一个实例。

  三、 得到一个类型类

一个类可以有两种身份,相对于类中的属性、方法,那么这个类就是我们平时认为的具有抽象意义的一个概念。而如果相对于我们上方对于对象创建中的说法的话,那么类又非常像一个对象,无论是这个类的对象还是这个类本身都可以看作是他的类对象的对象。

对于一个类,得到类型类就相当于得到他的本身,对于一个对象,就相当于得到他的蓝图。

有两个方法可以得到类型类:

  类名 .class                   Bank.class

 对象 . getClass()           Bank b = new Bank();        b.getClass();

两个方法有什么不同呢?

.class 获得一个的类型类, .getClass() 获得一个对象的类型类

而且 getClass() 得到的是将他实力的类的类型类

例如: Father father = new Child();

Father.class            指的是Father

father.getClass()     指的是Child

下面我们来看一个例子:

1. 输出类型类的名字(其中b 是Bank.java 的对象,此方法在Test中定义)

输出结果为

可以看见,输出的名字都是包名+类名,与他们是对象还是一个类没有任何关系。这说明,无论你是通过一个对象还是通过一个类获得的类型类都是一样的。

2. 下面我们看一下他们的地址。我在这里先获取一份Bank.class文件,再输出他的绝对地址。

file1是通过Test的类型类获得的,file2是通过eywords 的类型类获得的。

输出结果为

可以看到他们的地址输出时一样的,当然,这肯定应该是一样。

我想说明的是,根据相对路径的知识,我们可以知道,你的Test 和Keywords 的类型类的储存地址是在   D:\Eclipse_Worlplace\Try\bin\Bag  下,有没有一点感觉?没错,他就是我们编译后class文件储存的地址,所以我在开始的时候喜欢把他们两混合记忆,但是至于是不是,我还没有查到相关资料,你姑且可以这么认为。

类型类 && .class 与 .getClass() 的区别的更多相关文章

  1. 反射, getClass(), 和something.class以及类型类(转)

    原文地址:http://www.cnblogs.com/lianghui66/archive/2012/12/03/2799134.html 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统 ...

  2. Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别

    一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:   其中

  3. .class和.getClass()的区别

    使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类 如: getClass() 返回此 Object 的运行时类. //需要有com.lpx.test.class这个类 Logger ...

  4. C++ 类对象和 指针的区别

    C++ 类对象和 指针的区别 C++ 类对象和 指针的区别 转自:http://blog.csdn.net/ym19860303/article/details/8557746 指针的情况 class ...

  5. CSS 属性 :before && :after的用法,伪类和伪元素的区别

    一::before && :after的用法 :before 如同对伪元素的名称一样,:before 是用来给指定的元素的内容前面插入新的内容.举例说明: .before:before ...

  6. .class, class.forName(), getClass()的区别

    类名.class叫做"类字面量",因class是关键字, 所以类名.class编译时确定. getclass()运行时根据实际实例确定,getClass()是动态而且是final的 ...

  7. CSS之 :before && :after的用法,伪类和伪元素的区别

    一::before && :after的用法 :before 如同对伪元素的名称一样,:before 是用来给指定的元素的内容前面插入新的内容.举例说明: .before:before ...

  8. css中伪类和伪元素的区别

    转载:http://www.cnblogs.com/ihardcoder/p/5294927.html CSS3伪类和伪元素的特性和区别   前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常 ...

  9. 【详细解析】MySQL索引详解( 索引概念、6大索引类型、key 和 index 的区别、其他索引方式)

    [详细解析]MySQL索引详解( 索引概念.6大索引类型.key 和 index 的区别.其他索引方式) MySQL索引的概念: 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分 ...

随机推荐

  1. Jenkins file一行代码部署.NET程序到K8S

    什么是Jenkins共享库 随着微服务的增多,每个项目的都需要pipline文件,这样的话Pipeline代码冗余度高,并且pipeline的功能越来越复杂. jenkins可以使用Shared Li ...

  2. TDSQL | 在整个技术解决方案中HTAP对应的混合交易以及分析系统应该如何实现?

    从主交易到传输,到插件式解决方案,每个厂商对HTAP的理解和实验方式都有自己的独到解法,在未来整个数据解决方案当中都会往HTAP中去牵引.那么在整个技术解决方案中HTAP对应的混合交易以及分析系统应该 ...

  3. python微服务

    https://realpython.com/python-microservices-grpc/ https://github.com/saqibbutt/python-flask-microser ...

  4. GoLang设计模式14 - 状态模式

    状态模式,顾名思义,是一种基于有限状态机制的设计模式.在这种设计模式中,行为是由相应的状态来决定的.接下来我们会用一个售卖机的例子来说明下状态模式.为了便于说明,我们把场景简化一下,假设有一台售卖机只 ...

  5. Django笔记&教程 6-3 使用模型(models)创建表单(form)

    Django 自学笔记兼学习教程第6章第3节--使用模型(models)创建表单(form) 点击查看教程总目录 本文参考:Forms for models 1 - 初步介绍 很多时候,我们使用的表单 ...

  6. 最大连续子数组和--dp

    最大连续子数组和 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所给的整数均为负数时定义子段 ...

  7. lilypond 进阶—— 用scheme画图

    lilypond的许多底层设定是通过scheme语言写的,特别是要写函数的时候. 所以了解一下scheme的作用很重要. 不幸的是,不像lilypond本身的代码,scheme代码的结果是不会直接预览 ...

  8. 洛谷 P2481 [SDOI2010]代码拍卖会(背包+隔板法)

    题面传送门 题意: 给出 \(n,p\),求有多少 \(n\) 位数 \(X=a_1a_2a_3\dots a_n\) 满足: 该 \(n\) 位数不含前导零 \(a_i \leq a_{i+1}\) ...

  9. 数据仓库分层中的ODS、DWD、DWS

    1.数据仓库DW 1.1简介 Data warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源.为了决策需要而产生的,它是一整套包括了etl.调度 ...

  10. 重测序(RADseq)做群体遗传分析套路

    实验材料 构建的群体,或自然群体,如各地方品种. RAD文库构建 提取DNA后,构建文库,简要步骤如下: ① 限制性内切酶TaqI酶切: ② 连接P1接头: ③ DNA随机打断片断化: ④ 目的片段回 ...