Java基础——反射

反射,什么是反射

Java的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类所属的属性和方法,都能够调用他的属性和方法。这种动态获取的信息或者动态调用的方法的功能,我们称之为Java的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。

Class类

通过查阅API可以得知,Class类没有公共构造方法,Class对象在加载类时,由JVM以及通过调用类加载器中defineClass 方法自动构造的
获取Class对象的三种方法。
方式一:通过Object中的getObject()方法
  Person p=new Person();
  Class c=p.getPerson();
方式二:通过类名.class获取到字节码文件对象上(任意数据类型都具备一个class静态属性,看上去要比第一种方式简单)。
  Class c2 = Person.class;
方式三:通过Class类中的方法(将类名作为字符串传递给Class类中的静态方法forName即可)。
  Class c3 = Class.forName(“Person”);
第三种方式与前两种不同之处在于前两种必须明确Person类型,而第三种只需要指定这种类型的字符串就行.这种扩展更强
  代码演示:
  Person类

package exercise;

public class Person {
	public String name;
	private int age;
	
	
	public Person() {
		System.out.println("空参构造!");	
	}
	public Person(String name) {
		this.name = name;
		System.out.println("带String的构造");
	}
	
	private Person(int age) {
		this.age = age;
		System.out.println("私有构造!");
	}
	//没有返回值没有参数的方法
	public void method1(){
		System.out.println("没有返回值没有参数的方法");
	}
	//没有返回值,有参数的方法
	public void method2(String name){
		System.out.println("没有返回值,有参数的方法 name= "+ name);
	}
	//有返回值,没有参数
	public int method3(){
		System.out.println("有返回值,没有参数的方法");
		return 123;
	}
	//有返回值,有参数的方法
	public String method4(String name){
		System.out.println("有返回值,有参数的方法");
		return "哈哈" + name;
	}
	private void method5(){
		System.out.println("私有方法");
	}
}

测试类

public class Demo_1 {
	public static void main(String[] args) throws ClassNotFoundException {
		// 1: 通过Object类中的getObject()方法
		Person p1 = new Person();
		 Class c1 = p1.getClass();
		 System.out.println("c1 = "+ c1);

		 //2: 通过 类名.class 获取到字节码文件对象
	    Class c2 = Person.class;
	  	System.out.println("c2 = "+ c2);

		// 3: 反射中的方法
		Class c3 = Class.forName("exercise.Person");// 包名.类名
		System.out.println("c3 = " + c3);
	}
}

在这里插入图片描述
  
  //未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值