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

编程知识 更新时间:2023-04-05 08:48:19

目录

 

 

理论

实例


 

理论

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的初步学习

本文发布于:2023-04-05 08:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/e864264fdea52f6bebeba410a2d1fd7e.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:java   Java   Class   lang

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45754文章数
  • 14阅读数
  • 0评论数