您可以访问Java中的私有变量,而无需从';这不是一个内在的阶级
我对serialVersionUID的用途有了一个线索,而就我所知,我可以查找它。但是它可以是一个私有变量,在类中不使用。这背后是否有某种结构?是否有其他未在同一类中使用的私有变量/方法的示例?我可以访问Java中的私有变量,而不必像序列化那样从非内部类的类中获取getter吗?您可以访问这些值,并通过。您可以访问Java中的私有变量,而无需从';这不是一个内在的阶级,java,private,Java,Private,我对serialVersionUID的用途有了一个线索,而就我所知,我可以查找它。但是它可以是一个私有变量,在类中不使用。这背后是否有某种结构?是否有其他未在同一类中使用的私有变量/方法的示例?我可以访问Java中的私有变量,而不必像序列化那样从非内部类的类中获取getter吗?您可以访问这些值,并通过。 通过这种机制,您可以检查字段和调用方法。您可以访问这些值,并通过。 通过这种机制,您可以检查字段并调用方法。Java虚拟机正在读取此字段,它可以对您的程序执行任何操作,包括读取私有字段。请注意
通过这种机制,您可以检查字段和调用方法。您可以访问这些值,并通过。
通过这种机制,您可以检查字段并调用方法。Java虚拟机正在读取此字段,它可以对您的程序执行任何操作,包括读取私有字段。请注意与序列化相关的方法,如
writeObject
,但这对JVM来说也不是问题
您还可以通过反射或java.lang.invoke API访问私有字段/方法(但是
SecurityManager
可能会阻止您这样做)。在OracleJDK/OpenJDK中,还有一个非文档化的sun.misc.Unsafe
API,它允许您执行许多不安全的操作,包括从对象读取原始数据。Java虚拟机正在读取此字段,它可以对您的程序执行任何操作,包括读取私有字段。请注意与序列化相关的方法,如writeObject
,但这对JVM来说也不是问题
您还可以通过反射或java.lang.invoke API访问私有字段/方法(但是
SecurityManager
可能会阻止您这样做)。在Oracle JDK/Open JDK中,还有一个没有文档记录的sun.misc.Unsafe
API,它允许您执行许多不安全的操作,包括甚至从对象读取原始数据。使用java.lang.reflect.Member.setAccessible(true)
将在运行时覆盖任何隐私(这并不多——JVM会很高兴地访问给定名称的私有字段或方法,请参阅。使用java.lang.reflect.Member.setAccessible(true)
将在运行时覆盖任何隐私(没有太多–JVM将很高兴访问给定名称的私有字段或方法,请参阅。您可以使用downvoter请澄清。不,请关闭。这就是我要找的。您可以使用downvoter请澄清。不,请关闭。这就是我要找的。