javaClass = $javaClass; $this->options = $options; $cpInfo = $this->javaClass->getConstantPool(); foreach ($this->javaClass->getDefinedMethods() as $methodInfo) { /** * @var MethodInfo $methodInfo */ $methodName = $cpInfo[$methodInfo->getNameIndex()]->getString(); if (($methodInfo->getAccessFlag() & MethodAccessFlag::ACC_STATIC) !== 0) { $this->staticMethods[$methodName][] = $methodInfo; } else { $this->dynamicMethods[$methodName][] = $methodInfo; } } foreach ($this->javaClass->getDefinedFields() as $fieldInfo) { /** * @var FieldInfo $fieldInfo */ $fieldName = $cpInfo[$fieldInfo->getNameIndex()]->getString(); if (($fieldInfo->getAccessFlag() & FieldAccessFlag::ACC_STATIC) !== 0) { $this->staticFields[$fieldName] = $fieldInfo; } else { $this->dynamicFields[$fieldName] = $fieldInfo; } } $this->dynamicAccessor = new Accessor( $this, JavaClassDynamicMethodInvoker::class, JavaDynamicField::class, $this->dynamicMethods, Normalizer::normalizeFields( $this->dynamicFields, $this->javaClass ), $this->options ); $this->staticAccessor = new Accessor( $this, JavaClassStaticMethodInvoker::class, JavaStaticField::class, $this->staticMethods, Normalizer::normalizeFields( $this->staticFields, $this->javaClass ), $this->options ); } public function construct(...$arguments): ClassInvokerInterface { $this->dynamicAccessor = new Accessor( $this, JavaClassDynamicMethodInvoker::class, JavaDynamicField::class, $this->dynamicMethods, Normalizer::normalizeFields( $this->dynamicFields, $this->javaClass ), $this->options ); $this->getDynamic()->getMethods()->call( '', ...$arguments ); return $this; } /** * @return JavaClassInterface */ public function getClassObject() { return $this->javaClass; } }