Java中Class类的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中Class类的使用相关的知识,希望对你有一定的参考价值。

 1 package classTest;
 2 
 3 /**
 4  * 如何表示类的实例对象,也就是类类型(Class Type),有三种方法,也可以通过类类型来创建类的对象实例
 5  * @author Wang
 6  *
 7  */
 8 public class ClassDemo1 {
 9     public static void main(String[] args) {
10         
11         // Foo的实例对象如何表示,foo1就表示出来了
12         Foo foo1 = new Foo();
13         
14         // Foo这个类 也是一个实例对象,Class类的实例对象,如何表示呢,任何一个类都是Class的实例对象,这个实例对象有三种表示方式
15         // 第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class
16         Class c1 = Foo.class;
17 
18         // 第二种表示方式--->已经知道该类的对象通过getClass方法
19         Class c2 = foo1.getClass();
20 
21         // 第三种表达方式--->通过Class.forName方法动态加载类
22         Class c3 = null;
23         try {
24             c3 = Class.forName("com.imooc.reflect.Foo");
25         } catch (ClassNotFoundException e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }
29 
30         /*
31          * 官网 c1 ,c2 表示了Foo类的类类型(class type) 万事万物皆对象, 类也是对象,是Class类的实例对象
32          * 这个对象我们称为该类的类类型
33          */
34         
35         // 不管c1 or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象
36         System.out.println(c1 == c2);
37 
38         System.out.println(c2 == c3);
39 
40         // 我们完全可以通过类的类类型创建该类的对象实例---->通过c1 or c2 or c3创建Foo的实例对象
41         try {
42             // 需要有无参数的构造方法
43             Foo foo = (Foo) c1.newInstance();
44             foo.print();
45         } catch (InstantiationException e) {
46             // TODO Auto-generated catch block
47             e.printStackTrace();
48         } catch (IllegalAccessException e) {
49             // TODO Auto-generated catch block
50             e.printStackTrace();
51         }
52 
53     }
54 }
55 
56 class Foo {
57 
58     void print() {
59         System.out.println("foo");
60     }
61 }

 

以上是关于Java中Class类的使用的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

从JVM的角度看JAVA代码--代码优化

Java中Class类的使用

java获取泛型class

类的加载和双亲委派模型

java语言Class类的作用是啥以及怎么使用?