Java Reflection API更改类的行为

JavaReflection API提供了更改类行为的方法。让我们通过一个例子来理解这一点。

class Product{
	private string name;
	public int price;
}

在这里,如果我们可以访问类的价格数据成员,因为它是公共的,但是我们不能访问名称数据成员,因为它是私有的。为此,我们必须使用javaReflectionAPI方法setAccessible(true)。此方法更改数据成员的行为,采用布尔参数true或false(如果将其设置为true),则该数据成员将变得可访问。

让我们在程序中实现它:

import  java.lang.reflect.Field;

//代表计算机的类
class Computer
{
	private String MacNo;
	//的私人行为 
	//该成员在运行时通过Java Reflection API-
	private int productId;   
	public long price;
	
	//构造函数
	public Computer(String MacNo,int productId,long price)
	{
		this.MacNo=MacNo;	
		this.productId=productId;
		this.price=price;
	}
	//字符串功能以显示数据对象的值
	public String toString()
	{
		return("Mac Number :"+this.MacNo+"\nProductId :"+this.productId+"\nPrice :"+this.price);	
	}
}

//主类 
public class ExChangIngTheBehaviorOfClassAtRunTime_JAVAREFLECTION_API {
	public static void main(String[] args) {
		Computer C=new Computer("MDSK89*$",100,29000);
		System.out.println(C);

		///////现在我们将访问productId让我们看到......-
		try 
		{
			Class plsc=Class.forName("logicProgramming.Computer");
			
			//getDeclaredField返回类的指定字段
			Field F1=plsc.getDeclaredField("productId");
			
			//将可访问性设置为true,以便我们可以访问字段
			F1.setAccessible(true);
			int pid=(int)F1.get(C);
			Field F2=plsc.getDeclaredField("MacNo");
			F2.setAccessible(true);
			String MacNo=(String)F2.get(C);
			System.out.println();
			System.out.println("MacNumber :"+MacNo+"\nProductId :"+pid+"\nPrice :"+C.price);
			//嘿,我们可以访问私人会员 
			//类计算机Mac编号和产品ID-     
		}
		catch(Exception e)
		{
			System.out.println(e);
		}
	}
}

输出结果

Java Reflection API更改类的行为

在这里,我们可以访问上述类中私有的字段。