name = $name; $this->descriptor = $descriptor; $this->class = $class; $this->methodEntity = [ $name, $invokedName, $javaClass, ]; $this->classObject = JavaClass::load( $class, $javaClass->getOptions() ); } /** * @param $name * @param $arguments */ public function __call($name, $arguments) { return $this->classObject->{$name}(...$arguments); } public function __invoke(string $name, ...$arguments) { [$actualMethodName, $entityMethodName, $referredClassObject] = $this->methodEntity; return $referredClassObject ->getInvoker() ->getStatic() ->getMethods() ->call( $actualMethodName, ...$arguments ); } }