Skip to content

Commit d2b0ab7

Browse files
committed
update no params scene
1 parent f68ceb8 commit d2b0ab7

File tree

4 files changed

+54
-36
lines changed

4 files changed

+54
-36
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ allprojects {
2020
模块 build.gradle 添加如下依赖:
2121

2222
```groovy
23-
implementation 'com.github.KunMinX:Java8-Sealed-Class:1.0.0-beta'
23+
implementation 'com.github.KunMinX:Java8-Sealed-Class:1.1.0-beta'
2424
```
2525

2626
 
@@ -60,6 +60,8 @@ switch (event.id) {
6060
}
6161
```
6262

63+
提示:当参数列表为空,例如 void resultTest1(),适用于无参消息发送场景,故不提供 copy 方法。
64+
6365
 
6466

6567
## License

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ buildscript {
44
ext {
55
appTargetSdk = 32
66
appMinSdk = 23
7-
appVersionCode = 100000
8-
appVersionName = "1.0.0-beta"
7+
appVersionCode = 101000
8+
appVersionName = "1.1.0-beta"
99
}
1010
repositories {
1111
gradlePluginPortal()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.kunminx.sample.config;
2+
3+
import com.kunminx.sealed.annotation.Param;
4+
import com.kunminx.sealed.annotation.SealedClass;
5+
/**
6+
* Create by KunMinX at 2022/8/29
7+
*/
8+
@SealedClass
9+
public interface _Messages {
10+
void refreshNoteList();
11+
void finishActivity();
12+
}

sealed-compiler/src/main/java/com/kunminx/sealed/apt/SealedClassProcessor.java

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -127,43 +127,47 @@ public boolean process(Set<? extends TypeElement> types, RoundEnvironment rEnv)
127127
StringBuilder sb = new StringBuilder();
128128
StringBuilder sbStatic = new StringBuilder();
129129

130-
for (VariableElement ve : parameters) {
131-
String paramName;
132-
boolean isParam = false;
133-
if (ve.getAnnotation(Param.class) != null) {
134-
paramName = "param" + upperCaseFirst(ve.getSimpleName().toString());
135-
isParam = true;
136-
} else {
137-
paramName = "result" + upperCaseFirst(ve.getSimpleName().toString());
130+
if (parameters.size() > 0) {
131+
for (VariableElement ve : parameters) {
132+
String paramName;
133+
boolean isParam = false;
134+
if (ve.getAnnotation(Param.class) != null) {
135+
paramName = "param" + upperCaseFirst(ve.getSimpleName().toString());
136+
isParam = true;
137+
} else {
138+
paramName = "result" + upperCaseFirst(ve.getSimpleName().toString());
139+
}
140+
141+
FieldSpec fbInner = FieldSpec.builder(TypeName.get(ve.asType()), paramName)
142+
.addModifiers(Modifier.PUBLIC)
143+
.addModifiers(Modifier.FINAL)
144+
.build();
145+
innerClassBuilder.addField(fbInner);
146+
ps.add(ParameterSpec.get(ve));
147+
if (isParam) psParams.add(ParameterSpec.get(ve));
148+
if (!isParam) psResults.add(ParameterSpec.get(ve));
149+
consInnerBuilder.addStatement("this.$N = $N", paramName, ve.getSimpleName().toString());
150+
if (isParam) sb.append("this.").append(paramName).append(",");
151+
else sb.append(ve.getSimpleName().toString()).append(",");
152+
if (isParam) sbStatic.append(ve.getSimpleName().toString()).append(",");
153+
else sbStatic.append(getDefaultValue(ve)).append(",");
138154
}
139-
140-
FieldSpec fbInner = FieldSpec.builder(TypeName.get(ve.asType()), paramName)
141-
.addModifiers(Modifier.PUBLIC)
142-
.addModifiers(Modifier.FINAL)
143-
.build();
144-
innerClassBuilder.addField(fbInner);
145-
ps.add(ParameterSpec.get(ve));
146-
if (isParam) psParams.add(ParameterSpec.get(ve));
147-
if (!isParam) psResults.add(ParameterSpec.get(ve));
148-
consInnerBuilder.addStatement("this.$N = $N", paramName, ve.getSimpleName().toString());
149-
if (isParam) sb.append("this.").append(paramName).append(",");
150-
else sb.append(ve.getSimpleName().toString()).append(",");
151-
if (isParam) sbStatic.append(ve.getSimpleName().toString()).append(",");
152-
else sbStatic.append(getDefaultValue(ve)).append(",");
155+
String sbb = sb.toString();
156+
sbb = sbb.substring(0, sbb.length() - 1);
157+
String sbbStatic = sbStatic.toString();
158+
sbbStatic = sbbStatic.substring(0, sbbStatic.length() - 1);
159+
consInnerBuilder.addParameters(ps);
160+
mtCopyBuilder.addParameters(psResults);
161+
mtCopyBuilder.returns(ClassName.get(typeElement.getEnclosingElement().toString(), className + "." + innerClassName));
162+
mtCopyBuilder.addStatement("return new $N($N)", innerClassName, sbb);
163+
mtInsBuilder.addParameters(psParams);
164+
mtInsBuilder.addStatement("return new $N($N)", innerClassName, sbbStatic);
165+
innerClassBuilder.addMethod(mtCopyBuilder.build());
166+
} else {
167+
mtInsBuilder.addStatement("return new $N()", innerClassName);
153168
}
154-
String sbb = sb.toString();
155-
sbb = sbb.substring(0, sbb.length() - 1);
156-
String sbbStatic = sbStatic.toString();
157-
sbbStatic = sbbStatic.substring(0, sbbStatic.length() - 1);
158-
consInnerBuilder.addParameters(ps);
159169
innerClassBuilder.addMethod(consInnerBuilder.build());
160-
mtCopyBuilder.addParameters(psResults);
161-
mtCopyBuilder.returns(ClassName.get(typeElement.getEnclosingElement().toString(), className + "." + innerClassName));
162-
mtCopyBuilder.addStatement("return new $N($N)", innerClassName, sbb);
163-
innerClassBuilder.addMethod(mtCopyBuilder.build());
164170
classBuilder.addType(innerClassBuilder.build());
165-
mtInsBuilder.addParameters(psParams);
166-
mtInsBuilder.addStatement("return new $N($N)", innerClassName, sbbStatic);
167171
classBuilder.addMethod(mtInsBuilder.build());
168172
}
169173
}

0 commit comments

Comments
 (0)