这个代码的问题讲解一下

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果Person 类中有一个 private 修饰的 name 属性,数据类型为 String。
现要在测试类 TestPerson 中给 Person 的 name 赋值,以下哪个选项
的代码可以实现这一需求?( B )

A.Class cla=Person.Class;  Person p=new Person(); 
  Field name=cla.getField("name");  name.set(p,"Jack");

B.Class cla=Person.Class;  Person p=new Person(); 
  Field name=cla.getDeclareField("name"); name.setAccessible(true);
   name.set(p,"Jack");

C.Class cla=Person.Class;  Person p=new Person(); 
  Field name=cla. getDeclareField ("name");  name.set(p,"Jack");

D.Class cla=Person.Class;  Person p=new Person();  
  Field name=cla.getField("name");  name.setAccessible(true); 
  name.set(p,"Jack");

修改私有属性值,需要先授权。
通过setAccessible(true);