Skip to content

Commit c2a44f6

Browse files
committed
more use of varhandle
1 parent 7103516 commit c2a44f6

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/main/scala/tools/jackson/module/scala/introspect/BeanIntrospector.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ package tools.jackson.module.scala.introspect
2626
import com.fasterxml.jackson.annotation.JsonProperty
2727
import tools.jackson.module.scala.util.ClassW
2828

29+
import java.lang.invoke.MethodHandles
2930
import java.lang.reflect.{Constructor, Field, Method, Modifier}
3031
import scala.annotation.tailrec
3132
import scala.reflect.NameTransformer
@@ -71,9 +72,12 @@ object BeanIntrospector {
7172

7273
def findCompanionObject(c: Class[_]): Option[AnyRef] = {
7374
try {
74-
Some(c.getClassLoader.loadClass(c.getName + "$").getDeclaredField("MODULE$").get(null))
75+
val companionObjectClass = c.getClassLoader.loadClass(c.getName + "$")
76+
val varHandle = MethodHandles.publicLookup.findStaticVarHandle(
77+
companionObjectClass, "MODULE$", companionObjectClass)
78+
Some(varHandle.get())
7579
} catch {
76-
case e: Exception => None
80+
case _: Exception => None
7781
}
7882
}
7983

0 commit comments

Comments
 (0)