gpt4 book ai didi

java - 字节好友可以在运行时创建字段和方法注解吗?

转载 作者:行者123 更新时间:2023-11-29 03:01:08 24 4
gpt4 key购买 nike

我想实现这个第 3 方注释以将我的类的字段/属性映射到我的数据库表列。我可以在编译时轻松实现注释(如下面的示例代码所示),但我找不到在运行时执行此操作的方法。 (我在运行时使用反射加载库。)

我的问题是如何在运行时加载库时实现相同的映射注释?字节好友可以为 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;
}
}

最佳答案

是的,请引用the Annotations section of the documentation了解详情。

您可以通过以下方式使用 AnnotationDescription.Builder 构建注释:

AnnotationDescription.Builder.ofType(MapToProperty.class)
.define("property", "<value>")
.build();

生成的 AnnotationDescription 可以作为参数提供给动态类型构建器:

new ByteBuddy()
.subclass(Object.class)
.defineField("foo", Void.class)
.annotateField(annotationDescription)
.make();

同样,它适用于方法。

关于java - 字节好友可以在运行时创建字段和方法注解吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com