以下代码是我的注释类
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, last_name = sam,
但我期望如此。
first_name = vikram, last_name = Kumar,
如果可能的话,是否可以阅读请帮助我
答案 0 :(得分:0)
否
做你想做的事真的没有意义。
Annotation用于在编译时执行操作,它不存储变量数据。
您可以使用反射来查找批注并找出与之相关的变量,但是当您可以仅使用getter来获取变量的值而又没有所有麻烦的时候,这会花费很多精力。