天天看点

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

文章目录

  • 一、什么是java反射机制?
  • 二、Class类有什么特点?
  • 三、获取Class类的实例化对象
    • 1.forName方法
    • 2.类名.class
    • 3.包装类.TYPE
    • 4.getClass方法
    • 5.元素类型[].class
    • 6.调用某个类的Class类实例化对象的getSuperClass方法

一、什么是java反射机制?

Java反射机制是在运行状态中,对于任何一个类我们都可以调用其中的属性和方法,对于任意一个对象我们都可以调用它的属性和方法,这种动态操作类和对象的属性和方法的机制叫Java反射机制。

Java反射机制为了实现对成员变量,普通方法,构造方法的操作,需要借助Java自身提供的java.lang包下的Class类和java.lang.reflect包下反射API

二、Class类有什么特点?

Class类是Java反射机制的入口

如果封装了一个类或接口的运行时信息,可以通过调用Class类来获取这些信息

按住Ctrl键再将鼠标浮到Class上可以查看Class类的信息

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

①该类在java.lang包中

可以通过查看Class类的信息(26行)看到下图

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

也可以通过下列代码查出

public class Test {

	public static void main(String[] args) {
		System.out.println(Class.class);//获取Class类的实例
	}
}
           

执行结果证明Class类在java.lang包下

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

②该类被final修饰,该类不可以被子类继承(在Class类的119行可以看到下图)

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

该类不可以被子类继承

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

③该类实现了Serializable接口(119行)

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

④该类的构造方法用private修饰,不能通过new关键字创建该类的对象(137行)

java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

三、获取Class类的实例化对象

Class类不能通过new关键词创建对象

1.forName方法

通过Class类静态forName(“类包名.类名”)获取Class实例

public class Test{

	public static void main(String[] args) {
		try {
			Class<?> class1 = Class.forName("java.lang.Class");//如果泛型不确定?确定
			System.out.println(class1);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}
           

2.类名.class

public class Test{

	public static void main(String[] args) {
		Class<Student> student = Student.class;
		System.out.println(student);
	}
}
class Student{
	
}
           
java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

3.包装类.TYPE

如果是基本数据类型,可以通过包装类.TYPE获取Class类的实例化对象,也可以通过基本数据类型.class获取

public class Test{

	public static void main(String[] args) {
		Class<Boolean> class1 = Boolean.TYPE;
		System.out.println(class1);
	}
}
           
java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

public class Test{

	public static void main(String[] args) {
		Class<Boolean> cl = Boolean.class;
		System.out.println(cl);
	}
}
           
java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

4.getClass方法

public class Test{

	public static void main(String[] args) {
		Class<?> student = new Student().getClass();
		System.out.println(student);
	}
}
class Studnet{
	
}
           
java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

5.元素类型[].class

public class Test{

	public static void main(String[] args) {
		Class<String[]> clazz = String[].class;
		System.out.println(clazz);
	}
}
           
java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象

6.调用某个类的Class类实例化对象的getSuperClass方法

public class Test{

	public static void main(String[] args) {
		Class<?> clazz = Student.class.getSuperclass();
		System.out.println(clazz);
	}
}
class Studnet{
	
}
           
java反射机制是什么?Class有什么特点?怎么获取Class类实例?一、什么是java反射机制?二、Class类有什么特点?三、获取Class类的实例化对象