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));