同样,一个Class对象必须知道自己的超类、超级接口。因此,Class对象会引用自己的超类和超级接口的Class对象。这种引用一定是实例引用。(实际上,超类、超级接口的引用也存储在常量池中,但为了区分依赖类的引用,将它特殊表述一下。)因此,我暂且得到两条结论。结论一:持有一个Class对象的引用,则...
分类:
其他好文 时间:
2014-08-25 19:10:04
阅读次数:
258
一.反射之实例化Class类的5种方式:java的数据类型可以分为两类,即引用类型和原始类型(即基本数据类型)。 对于每种类型的对象,java虚拟机会实例化不可变的java.lang.Class对象。 它提供了在运行时检查对象属性的方法,这些属性包括它的成员和类型信息。更重要的是Class对象...
分类:
编程语言 时间:
2014-08-15 17:26:59
阅读次数:
353
java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成 instance都有多种方式。所以只有弄清其中的原理,才可以深入理解。首先要生成Class对象,然后再生成Instance。那Class对象的生 成方式有哪些呢,以及其中是如何秘密生成的呢?Class对象的生成方式如下:...
分类:
编程语言 时间:
2014-08-14 16:07:18
阅读次数:
199
随着应用规模的逐渐增大,依赖的jar包数量也大幅增加,其中不乏多余的,用不到的jar包,占用了大量的宝贵空间。通过loosejar这个工具,便可轻松找到“滥竽充数”的jar包了~
loosejar的工作原理是利用classloader。因为应用在运行的时候,用到哪个类,classloader就会把这个类的.class文件加载到jvm中,然后生成一个class对象,然后再利用反射就可以执行这个类的...
分类:
其他好文 时间:
2014-08-10 21:43:01
阅读次数:
317
1,java类的加载java类的加载是指将.class文件(可能在磁盘,也可能在网络)加载到内存中,并为之生成java.lang.class对象的实例java中类以其全限定包名作为唯一标识,jvm中则以全限定包名和类加载器作为唯一标识。jvm中的类加载器有三个层次:根类加载器、扩展类加载器、系统类加...
分类:
编程语言 时间:
2014-08-08 01:31:24
阅读次数:
296
关于synchronized关键字的作用:
1、在某个对象的所有synchronized方法中,在某一时刻,只能有一个唯一的一个线程去访问这些synchronized方法
2、如果一个方法是synchronized方法,那么该synchronized关键字表示给当前对象(this)上锁。
3、如果一个synchronized方法是静态(static)的,那么该synchronized关键字表示给当前对象所对应的class对象上锁。(每个类,不管生成多少对象,其对应的class对象只有一个)
4、多线程:如...
分类:
编程语言 时间:
2014-07-31 07:28:45
阅读次数:
236
当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三个步骤来对该类进行初始化。 类加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当...
分类:
其他好文 时间:
2014-07-26 15:41:12
阅读次数:
206
javaassist 获取工程下任意class对象,解决javaassist 出现的类没找到异常ClassNotFoundException...
分类:
编程语言 时间:
2014-07-18 22:27:34
阅读次数:
1150
经验:"public继承"意味 is-a。适用于 base classes 身上的每一件事情一定也适用于 derived classes 身上,
因为每一个 derived classes 身上,因为每一个 derived class 对象也都是一个 base class 对象。
示例:
class Person {...};
class Student: public Person {...};
void eat(const Person &p); //任何人都会吃
void study(const ...
分类:
编程语言 时间:
2014-07-12 21:18:25
阅读次数:
230