import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD) //约束条件。只能限定注解修饰在变量。
@Retention(value = RetentionPolicy.RUNTIME) //运行时。
public @interface Info {
int id() default 0;
String name() default "zhang";
String password() default "123";
}
public class User {
@Info(id = 1)
public int id;
@Info(name = "zhangphil")
public String name;
@Info(password = "123456")
public String password;
}
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import java.lang.reflect.Field;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
User user = new User();
Field[] fields = user.getClass().getDeclaredFields();
for (Field f : fields) {
Info info = f.getAnnotation(Info.class);
if (info != null) {
if (f.getName().equals("id")) {
System.out.println(f.getName() + "," + info.id());
} else if (f.getName().equals("name")) {
System.out.println(f.getName() + "," + info.name());
} else if (f.getName().equals("password")) {
System.out.println(f.getName() + "," + info.password());
}
}
}
}
}
输出: