gpt4 book ai didi

java - 在注释中分配动态值

转载 作者:行者123 更新时间:2023-12-01 23:32:59 26 4
gpt4 key购买 nike

我有一个名为“InHouse”的自定义注释。

@Target(value = ElementType.FIELD)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface InHouse {

public String[] parentClassNames() default {};
}

我在我的 POJO 类中应用了这个注释

public class Person{

@InHouse(parentClassNames={"com.amar.Contact"})
public Contact contact;
}

像这样我指定了我的注释。因此,当我指定一个值(parentClassNames)时,我硬编码了完全限定的类名,而不是有任何方法可以像“Contact.class.getName()”一样进行访问。当我使用这个时,我遇到了编译问题。那么我怎样才能实现这个目标...?

我想要这样。

public class Person{

@InHouse(parentClassNames={Contact.class.getName()})
public Contact contact;
}

有什么办法可以实现这个......?

最佳答案

这是不可能的,因为在编译时无法知道反射类名称。您可以尝试将注释值参数类型更改为Class[]。然后你就可以按照你想要的方式使用它:

@Target(value = ElementType.FIELD)
@Retention(value = RetentionPolicy.RUNTIME)
@interface InHouse {

public Class[] parentClassNames() default {};
}

public class Person{

@InHouse(parentClassNames={Integer.class, String.class}) //Integer and String
//are just as example, i know they are final and cant be parent classes :)
public Contact contact;
}

当您稍后处理该注释时,从 Class 对象获取类名并不困难。

关于java - 在注释中分配动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19065211/

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