Java中关于类.Class()、对象.getCalss、对象.getClass().getName()的区别

1.获取Class对象的三种方式

    ①通过类名获取       类名.class

    ②通过对象获取      对象名.getClass()

    ③通过全限定类名获取(必须添加完整包名)

	public static void main(String[] args) {

		List list = new ArrayList();
		
		System.out.println(List.class);//interface java.util.List
		
		/*
		 * list.getClass()返回值为一个Class类的对象,
		 * 在输出时,自动调用Class类中的toString()方法,做相关逻辑处理,
		 * 然后输出interface java.util.List或者class java.util.ArrayList等字符串
		 */
		System.out.println(list.getClass());//class java.util.ArrayList
		
		//list.getClass().getName()返回值为一个字符串
		System.out.println(list.getClass().getName());//java.util.ArrayList
		System.out.println(ArrayList.class);//class java.util.ArrayList
		
		System.out.println(List.class == list.getClass());//false
		System.out.println(list.getClass() == ArrayList.class );//true
		

	}

2.反射

     Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。

  Java反射机制主要提供了以下功能:

  • 在运行时构造任意一个类的对象
  • 在运行时获取任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的方法(属性)
  • 生成动态代理

  Class 是一个类; 一个描述类的类.

        封装了描述方法的 Method,

              描述字段的 Filed,

              描述构造器的 Constructor 等属性.

猜你喜欢

转载自blog.csdn.net/qq_38986609/article/details/82500677