你所要求的不会在多个层面上发挥作用.
您无法在源代码/编译级别执行此操作.它改变了Java语言.它也无法实现任何目标.
在运行时,您无法以任何有用的方式执行此操作.您可以使用反射来使字段可访问.但是,这是不切实际的,因为:
这必须一次Field一个,或一次Class一个; 例如
Field[] fields = clazz.getDeclaredFields();
AccessibleObject.setAccessible(fields, true);
Run Code Online (Sandbox Code Playgroud)您需要保留所有Field"处理"的Field对象,因为将对象设置为可访问不会影响Field同一字段的其他对象.
如果您修改源代码以使用反射和上述Field对象来访问字段值,则只能使用此方法.
如果您试图了解代码的工作原理,还有其他更好的方法.
@ElliottFrisch为什么这是一个坏主意?
基本上,因为它不会帮助你.