INNER CODE UNIT · Java

createInjectClass

xiaojinzi123/Component · ComponentCompiler/src/main/java/com/xiaojinzi/component/AutowireProcessor.java:192

    private void createInjectClass(TypeElement targetClass, Set<VariableElement> parameterFieldSet) {
        boolean isKotlinFile = Utils.isKotlinFile(targetClass);
        // 拿到注解类的全类名
        String fullClassName = targetClass.getQualifiedName().toString();
        int lastPointIndex = fullClassName.lastIndexOf('.');
        //pkg
        String pkg = fullClassName.substring(0, lastPointIndex);
        //simpleName
        String className = fullClassName.substring(lastPointIndex + 1);
        TypeSpec.Builder classBuilder = TypeSpec
                .classBuilder(className + ComponentConstants.INJECT_SUFFIX)
                .addAnnotation(mClassNameKeep)
                .addAnnotation(mClassNameComponentGeneratedAnno)
                .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
                .addSuperinterface(ParameterizedTypeName.get(injectClassName, TypeName.get(mElements.getTypeElement(fullClassName).asType())))
                .addMethod(injectAttrValueMethod1(targetClass))
                .addMethod(injectAttrValueMethod2(targetClass, isKotlinFile, parameterFieldSet))
                .addMethod(injectServiceMethod(isKotlinFile, targetClass, parameterFieldSet));

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…