@@ -27,6 +27,26 @@ class JavaClassInvoker
2727
2828 private $ debugTraces ;
2929
30+ /**
31+ * @var JVM\Invoker\DynamicMethodInvoker
32+ */
33+ private $ dynamicMethodAccessor ;
34+
35+ /**
36+ * @var JVM\Invoker\StaticMethodInvoker
37+ */
38+ private $ staticMethodAccessor ;
39+
40+ /**
41+ * @var JVM\Field\DynamicField
42+ */
43+ private $ dynamicFieldAccessor ;
44+
45+ /**
46+ * @var JVM\Field\StaticField
47+ */
48+ private $ staticFieldAccessor ;
49+
3050 public function __construct (JavaClass $ javaClass )
3151 {
3252 $ this ->javaClass = $ javaClass ;
@@ -58,6 +78,25 @@ public function __construct(JavaClass $javaClass)
5878 }
5979 }
6080
81+ $ this ->dynamicMethodAccessor = new JVM \Invoker \DynamicMethodInvoker (
82+ $ this ,
83+ $ this ->dynamicMethods
84+ );
85+
86+ $ this ->staticMethodAccessor = new JVM \Invoker \StaticMethodInvoker (
87+ $ this ,
88+ $ this ->staticMethods
89+ );
90+
91+ $ this ->dynamicFieldAccessor = new JVM \Field \DynamicField (
92+ $ this ,
93+ []
94+ );
95+
96+ $ this ->staticFieldAccessor = new JVM \Field \StaticField (
97+ $ this
98+ );
99+
61100 // call <clinit>
62101 if (isset ($ this ->staticMethods ['<clinit> ' ])) {
63102 $ this ->getStaticMethods ()->call ('<clinit> ' );
@@ -71,33 +110,22 @@ public function getJavaClass(): JavaClass
71110
72111 public function getDynamicMethods (): InvokerInterface
73112 {
74- return new JVM \Invoker \DynamicMethodInvoker (
75- $ this ,
76- $ this ->dynamicMethods
77- );
113+ return $ this ->dynamicMethodAccessor ;
78114 }
79115
80116 public function getStaticMethods (): InvokerInterface
81117 {
82- return new JVM \Invoker \StaticMethodInvoker (
83- $ this ,
84- $ this ->staticMethods
85- );
118+ return $ this ->staticMethodAccessor ;
86119 }
87120
88121 public function getDynamicFields (): FieldInterface
89122 {
90- return new JVM \Field \DynamicField (
91- $ this ,
92- []
93- );
123+ return $ this ->dynamicFieldAccessor ;
94124 }
95125
96126 public function getStaticFields (): JVM \Field \StaticField
97127 {
98- return new JVM \Field \StaticField (
99- $ this
100- );
128+ return $ this ->staticFieldAccessor ;
101129 }
102130
103131}
0 commit comments