java Class初解

来源:互联网 发布:天才琪露诺软件 编辑:程序博客网 时间:2024/05/18 21:50

第一次写博客,写得不好,如果有朋友看到,请别见怪,有什么问题可以提出来。

自己是一个比较随性,不拘小节的人,不喜欢那些条条框框,所以性格使然,在写博客的时候我不会用那些官方的话,那样别人难以理解,自己理解起来也困难

所以我会用最简单粗暴的语言来说明,可能还会举一些例子来说明。

好记性不如烂笔头,今天向公司一大神请教问题的时候,大神强烈建议,遇到问题时把学习的过程用博客纪录下来,这样忘记了随时可以打开,看下自己解决的思路。

今天遇到一个问题,就是最近经常遇到XXX.class这个代码。很蒙蔽。这代码到底是干嘛用的,从而延伸到了Class类。只要了解这个类,那么这些问题都迎刃而解。

了解一个新东西,需要三个步骤

what,why,how。

好了,这三个步骤相信很多人都知道是什么意思,

不多BB,直接进入主题

第一:Class是什么?

先来看下Class的结构

java.lang.Objectjava.lang.Class<T>

public final class Class<T>extends Objectimplements Serializable, GenericDeclaration, Type, AnnotatedElement


那么Class这个类是什么东东呢?

我这样:java程序在运行的时候需要把相关的类或者接口加载到JVM里对吧?那么问题来了,加载到JVM里的类啊,接口啊怎么管理呢?这时候本着面向对象的思想,Class就是来管理被加载的类或者接口的对象。

Class对象又是怎么样运作的呢?

Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。

But,要注意几点

1.Class没有公开的构造函数,通过源码,可以发现它的构造函数是私有的。这就意味它不能显性的构造,

   Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。

2.基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也都对应一个 Class 对象。

3.同一个类的多个实例对象,在JVM里的Class对象是同一个,可以说是唯一一个。

如:

User user1 =new User();User user2 =new User();User user3 = new User();user1,user2,user3是三个不同的实例对象,但是他们的类User在JVM里面的Class对象永远只有一个。说白了Class对象只认User。

第一点Class是什么就简单的讲完了。

第二点:为什么会这样设计Class类。

这个的话,由于个人功力还不够深厚,具体的说不出个所以然,但是Class作为反射的基础,有一点是肯定的就是跟反射技术有很大关系。

反射技术,有兴趣的可以在网上找找资料。

第三点:怎么使用Class对象

使用Class对象有三种方式。

1.

Class.forName(String forName);

forName参数为你需要调用的类的全名,包括包名。这个大家应该很清楚,连接JDBC时就使用过。

2.

User user =new User();user.getClass();




原创粉丝点击