我想实现这个第三方注释,将我的类的字段/属性映射到我的数据库表列。我可以在编译时轻松实现注释(如下面的示例代码所示),但我找不到在运行时执行此操作的方法。 (我在运行时使用反射加载库。)
我的问题是如何在运行时加载库时实现相同的映射注释? Byte Buddy可以为Android处理这个吗?
//3rd party annotation code
package weborb.service;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface MapToProperty {
String property();
}
/////////////////////////////////////////////// //////
//Here is the implementation using non-reflection
import weborb.service;
Class Person
{
@MapToProperty(property="Person_Name")
String name;
@MapToProperty(property="Person_Age")
int age;
@MaptoProperty(property="Person_Name")
public String getName()
{
return this.name;
}
@MaptoProperty(property="Person_Name")
public void setName(String name)
{
this.name = name;
}
@MaptoProperty(property="Person_Age")
public int getAge()
{
return this.age;
}
@MaptoProperty(property="Person_Age")
public void setAge(int age)
{
this.age = age;
}
}
答案 0 :(得分:2)
是的,请参阅the Annotations section of the documentation了解详情。
您可以使用ng-i18next
制作注释:
AnnotationDescription.Builder
生成的AnnotationDescription.Builder.ofType(MapToProperty.class)
.define("property", "<value>")
.build();
可以作为参数提供给动态类型构建器:
AnnotationDescription
同样,它适用于方法。