Java 是否可以使用它读取变量值';s注释类
下面的代码是我的注释类Java 是否可以使用它读取变量值';s注释类,java,reflection,Java,Reflection,下面的代码是我的注释类 import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Documented @Tar
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Search {
public String name();
public String value();
}
下面的课是普通课
public class MyClass{
@Search(name = "first_name", value = "srivas")
private String first_name;
@Search(name = "last_name", value = "sam")
private String last_name;
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String customername) {
this.customername = customername;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name= last_name;
}
}
这里我将读取变量值
public class MyService{
public void getvalues(){
MyClass myvals = new MyClass();
myvals.setFirst_name("Vikram");
myvals.setLast_name("Kumar");
for(Field f: MyClass.class.getDeclaredFields()){
MyClass searchfields = f.getAnnotation(MyClass.class);
if (searchfields != null)
System.out.println(searchfields.name()+" = "+searchfields .value());
}
}
}
我得到以下输出
first_name=srivas,
姓氏=山姆
但我期待着
first_name=vikram,
姓氏=库马尔
如果可能的话,请帮我阅读
而且,做你想做的事情真的没有意义
注释用于在编译时执行操作,它不是变量数据的存储
您可以使用反射来查找注释并找出它与哪个变量相关,但是如果您可以使用getter来获取变量的值而不需要所有这些麻烦,那就需要付出很大的努力。我不明白,您的意思是
myvals.getFirst_name()
?f.getAnnotation(MyClass.class);gve您是否返回批注而不是字段您永远不会访问字段first\u name
本身,name()
和value()
访问批注的两个字段。谢谢,@Lino先生,我正试着用annotation classPro阅读提示:一般来说,人们在回答问题时投入的精力是成比例的,因为他们看到提问时投入的精力是成比例的。所以请后退一步,试着写得恰当。