java jaxb是如何工作的?

Alf*_*red 5 java jaxb

只是好奇jaxb是如何工作的,我有一个注释如下的类:

@XmlRootElement(name = "MyJaxb")
Class MyJaxb
{
      @XmlElement
      protected String str;

      public void setStr(String str)
      {
           this.str = str;
      }
 }
Run Code Online (Sandbox Code Playgroud)

字段str的访问修饰符受到保护,为什么Jaxb仍然可以对其进行编组和解组?

ska*_*man 12

它使用反射.甲protectedprivate字段或方法可以使用反射API(使用访问setAccessible(true)在相应的FieldMethod对象).

记住 - public,protected并且private是对默认可见性的控制,仅此而已.他们没有(也不能)阻止使用反射进行访问.

  • @Guoqin如果你真的想要,你可以使用反射强制通过访问控制,但是你知道你故意破坏它.访问控制关键字旨在表达程序员的意图,它们不是安全工具.如果一个程序员创建一个字段"私有",他会说"你不应该自己弄乱这个字段" - 如果你强行它,程序的行为就无法得到保证. (4认同)