Java中java.lang.Class的初步学习
目录理论实例理论Java中有个java.lang.Class,是java虚拟机用的。把每一个类当成一个对象,放到java虚拟机里面,这是C/C++中没有的。类是对象的抽象,类是java.lang.Class类抽象的抽象。java.lang.Class的实例是Java中开发者创建的类,对象是开发者创建类的实例。这里个人觉得是因为Java跑起来需要J...
·
目录
理论
Java中有个java.lang.Class,是java虚拟机用的。把每一个类当成一个对象,放到java虚拟机里面,这是C/C++中没有的。
类是对象的抽象,类是java.lang.Class类抽象的抽象。
java.lang.Class的实例是Java中开发者创建的类,对象是开发者创建类的实例。
这里个人觉得是因为Java跑起来需要Java虚拟机,所以在C/C++的基础上再套一层。
实例
源码如下:‘
package my;
class Foo{
public void print() {
System.out.println("Foo print");
}
}
public class ClassDemo {
public static void main(String[] args) {
Foo foo1 = new Foo();
//方法一
@SuppressWarnings("rawtypes")
Class c1 = Foo.class;
//方法二
@SuppressWarnings("rawtypes")
Class c2 = foo1.getClass();
//方法三
@SuppressWarnings("rawtypes")
Class c3 = null;
try {
c3 = Class.forName("my.Foo");
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//创建对象
try {
Foo foo = (Foo)c1.newInstance();
}
catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(c2 == c3);
}
}
运行截图如下:
这里有三种方式得到Class类
方式一:任何一个类都有一个隐含的静态成员变量Class
方式二:以及知道该类对象通过getClass方法
方式三:通过Class中的forName创建实例
这里可以通过类类型创建该类的实例。如上面的
Foo foo = (Foo)c1.newInstance();
这里需要无参的构造函数
更多推荐
已为社区贡献16条内容
所有评论(0)