Java/Android Annotation注解(一)

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/86599900
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());
                }
            }
        }
    }
}

输出:

猜你喜欢

转载自blog.csdn.net/zhangphil/article/details/86599900