目录

 

 

理论

实例


 

理论

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();

这里需要无参的构造函数

 

更多推荐

Java中java.lang.Class的初步学习