一起学Java(二十三)-----反射

不积跬步,无以至千里;不积小流,无以成江海。

Java语言基础

Java反射

先看一下正向的操作,对这个类进行实例化,再使用这个类对象进行操作。

public class Apple {
	
	private int price;
	public int highprice;
	int lowprice;
	String name;
	
	public int getprice() {
		return price;
	}
	
	public void setprice(int price) {
		this.price = price;
	}
	
	public void sell(){
		System.out.println("All apples are selling!");
	}
	
	private void buy() {
		System.out.println("Buy apples!");
	}

	public static void main(String[] args) throws Exception {
		//正常调用
		Apple apple = new Apple();
		apple.setprice(5);
		System.out.println("apple's price is: " + apple.getprice());

	}

}

  

使用反射机制,先要获取到该类的字节码文件对象(.class)

获取字节码文件对象的三种方式。

Class cls = Class.forName("Testfather.Apple");
Class cls = Apple.class;
Class cls = apple.getClass(); 

1. 通过Class类中的静态方法forName,直接获取到一个类的字节码文件对象,此时该类还是源文件阶段,并没有变为字节码文件。

Class cls = Class.forName("Testfather.Apple"); 

2. 当类被加载成.class文件时,此时Person类变成了.class,在获取该字节码文件对象,也就是获取自己, 该类处于字节码阶段。

Class cls = Apple.class;

3. 通过类的实例获取该类的字节码文件对象,该类处于创建对象阶段。

Class cls = apple.getClass();

  

猜你喜欢

转载自www.cnblogs.com/smilexuezi/p/11983490.html