Flutter 注解处理及代码生成
// 定义注解
@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.CLASS)
annotation class GenerateIntentClass(val action: String, val data: String = "")
// 使用注解
@GenerateIntentClass(action = "com.example.MY_ACTION", data = "http://www.example.com")
class MainActivity
// 代码生成器示例
fun generateIntentClass(env: ProcessingEnvironment, element: TypeElement): String {
// 获取注解值
val action = element.getAnnotation(GenerateIntentClass::class.java).action
val data = element.getAnnotation(GenerateIntentClass::class.java).data
// 生成类名
val className = element.simpleName.toString() + "Intent"
// 构建方法体
val methodBody = "Intent(action).setData(Uri.parse(data))"
// 返回生成的类代码
return """
package ${element.qualifiedName}
import android.content.Intent
import android.net.Uri
class $className : Intent($methodBody)
""".trimIndent()
}
这个代码示例展示了如何定义注解、使用注解、以及如何根据注解生成代码。这里的注解用于指示生成器生成一个新的Intent类,并根据提供的action和data初始化它。生成器函数generateIntentClass
接收注解元素,并构建一个新类的代码字符串。
评论已关闭