Skip to content

Commit 3c22c53

Browse files
committed
Clarify MethodHandles usage in FieldAccessHelper
Added comments to explain that setAccessible is still required to bypass access checks when using MethodHandles for field access, providing more context on the security and compatibility considerations.
1 parent 7614f7d commit 3c22c53

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

nitrite/src/main/java/org/dizitart/no2/repository/FieldAccessHelper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ private static Object getFieldValue(Field field, Object obj) throws IllegalAcces
8282
try {
8383
// Use MethodHandles.lookup().unreflect which is available since Android API 26
8484
// This is more secure than setAccessible but requires the field to be accessible
85+
// while MethodHandles provide a more modern API, setAccessible is still required to bypass access checks.
8586
field.setAccessible(true);
8687
MethodHandles.Lookup lookup = MethodHandles.lookup();
8788
MethodHandle getter = lookup.unreflectGetter(field);
@@ -99,6 +100,7 @@ private static void setFieldValue(Field field, Object obj, Object value) throws
99100
try {
100101
// Use MethodHandles.lookup().unreflect which is available since Android API 26
101102
// This is more secure than direct setAccessible + set
103+
// while MethodHandles provide a more modern API, setAccessible is still required to bypass access checks.
102104
field.setAccessible(true);
103105
MethodHandles.Lookup lookup = MethodHandles.lookup();
104106
MethodHandle setter = lookup.unreflectSetter(field);

0 commit comments

Comments
 (0)