1     //获取对应的运行时类的属性
 2     @Test
 3     public void test1(){
 4         Class clazz = Person.class;
 5         //1.getFields():只能获取到运行时类中及其父类中声明为public的属性
 6         Field[] fields = clazz.getFields();
 7
 8         for(int i = 0;i < fields.length;i++){
 9             System.out.println(fields[i]);
10         }
11         System.out.println();
12         //2.getDeclaredFields():获取运行时类本身声明的所有的属性
13         Field[] fields1 = clazz.getDeclaredFields();
14         for(Field f : fields1){
15             System.out.println(f.getName());
16         }
17     }

 1 //权限修饰符  变量类型 变量名
 2     //获取属性的各个部分的内容
 3     @Test
 4     public void test2(){
 5         Class clazz = Person.class;
 6         Field[] fields1 = clazz.getDeclaredFields();
 7         for(Field f : fields1){
 8             //1.获取每个属性的权限修饰符
 9             int i = f.getModifiers();
10             String str1 = Modifier.toString(i);
11             System.out.print(str1 + " ");
12             //2.获取属性的类型
13             Class type = f.getType();
14             System.out.print(type.getName() + " ");
15             //3.获取属性名
16             System.out.print(f.getName());
17
18             System.out.println();
19         }
20     }

 1 //调用运行时类中指定的属性
 2     @Test
 3     public void test3() throws Exception{
 4         Class clazz = Person.class;
 5         //1.获取指定的属性
 6         //getField(String fieldName):获取运行时类中声明为public的指定属性名为fieldName的属性
 7         Field name = clazz.getField("name");
 8         //2.创建运行时类的对象
 9         Person p = (Person)clazz.newInstance();
10         System.out.println(p);
11         //3.将运行时类的指定的属性赋值
12         name.set(p,"Jerry");
13         System.out.println(p);
14         System.out.println("%"+name.get(p));
15
16         System.out.println();
17         //getDeclaredField(String fieldName):获取运行时类中指定的名为fieldName的属性
18         Field age = clazz.getDeclaredField("age");
19         //由于属性权限修饰符的限制,为了保证可以给属性赋值,需要在操作前使得此属性可被操作。
20         age.setAccessible(true);
21         age.set(p,10);
22         System.out.println(p);
23
24 //        Field id = clazz.getField("id");
25
26     }

 1  class Person extends Creature<String> implements Comparable,MyInterface{
 2     public String name;
 3     private int age;
 4     int id;
 5     //创建类时,尽量保留一个空参的构造器。
 6     public Person() {
 7         super();
 8 //        System.out.println("今天天气很闷热");
 9     }
10     public Person(String name) {
11         super();
12         this.name = name;
13     }
14     private Person(String name, int age) {
15         super();
16         this.name = name;
17         this.age = age;
18     }
19     public String getName() {
20         return name;
21     }
22     public void setName(String name) {
23         this.name = name;
24     }
25     public int getAge() {
26         return age;
27     }
28     public void setAge(int age) {
29         this.age = age;
30     }
31
32     public int getId() {
33         return id;
34     }
35     public void setId(int id) {
36         this.id = id;
37     }
38     @MyAnnotation(value = "abc123")
39     public void show(){
40         System.out.println("我是一个人!");
41     }
42
43     private Integer display(String nation,Integer i) throws Exception{
44         System.out.println("我的国籍是:" + nation);
45         return i;
46     }
47     @Override
48     public String toString() {
49         return "Person [name=" + name + ", age=" + age + "]";
50     }
51     @Override
52     public int compareTo(Object o) {
53         // TODO Auto-generated method stub
54         return 0;
55     }
56
57     public static void info(){
58         System.out.println("中国人!");
59     }
60
61     class Bird{
62
63     }
64
65 }

import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {String value();
}

public class Creature<T>{public double weight;public void breath(){System.out.println("呼吸!");}
}

import java.io.Serializable;public interface MyInterface extends Serializable{}

转载于:https://www.cnblogs.com/zhangfan94/p/4273221.html

JAVA学习--反射属性操作相关推荐

  1. Java学习之文件操作

    前言 因为文件操作是一个非常常见的操作,在加上用法非常固定,就写一篇博客整理一下 我直接用一个小项目说明文件操作的方法,当然主要还是去看官方的api文档是最好的 我的一个demo程序是监听一个目录下的 ...

  2. JAVA学习 API_day11(属性集, 函数式编程, stream流)

    属性集, 函数式编程, stream流 I/O流小结 1. 属性集 2. 函数式编程 3. stream流 I/O流小结 文件复制: BufferedInputStream/BufferedOutpu ...

  3. Java学习笔记---IO操作

    一.文件的创建 ------------------------------------------------------- File类,表示磁盘上的文件或目录,可对文件或目录进行操作.    * ...

  4. 字节大牛教你手撕Java学习,神操作!

    下面总结了我这一段时间面试出现的一些spring高频问题 什么是 Spring 框架?Spring 框架有哪些主要模块? 使用 Spring 框架能带来哪些好处? 什么是控制反转(IOC)?什么是依赖 ...

  5. java学习_File属性处理

    // TODO Auto-generated method stub File file=new File("newhello.txt"); //文件是否存在 System.out ...

  6. JAVA学习日记(18)——反射和枚举

    1.反射 1.1 定义 Java的反射(reflection)机制是在运行状态下,对于任何一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意属性和方法,既然能够拿到那么我们 ...

  7. 反射第一篇,学习Java的反射基础

    反射基础 什么是反射? 反射的使用 介绍:类对象 获取类对象 类对象的方法简介 使用:利用反射创建对象 例 调用特定构造方法 使用:获取成员变量并修改 例 使用:获取成员方法并调用 例 调用特定方法 ...

  8. Java学习总结:39(反射机制)

    反射机制 JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制. Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属 ...

  9. Java学习之二-Java反射机制

    问题: 在运行时,对一个JAVA类,能否知道属性和方法:能否调用它的任意方法? 答案是可以的,JAVA提供一种反射机制可以实现. 目录 什么是JAVA的反射机制 JDK中提供的Reflection A ...

最新文章

  1. dynamic_caast操作符
  2. DL之FCN:FCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  3. OpenGL textures纹理的实例
  4. crm开源系统 tp框架_八个开源的 Spring Boot 前后端分离项目,一定要收藏!
  5. Navicat for MySQL 使用SSH方式链接远程数据库
  6. 译:6.RabbitMQ Java Client 之 Remote procedure call (RPC,远程过程调用)
  7. Spring学习总结(25)——注解@PostConstruct和@PreDestroy使用总结
  8. Ubuntu——安装中文拼音输入法
  9. cc2530设计性实验代码八
  10. 闩锁效应的产生原因及解决办法
  11. 组合数学(2)——组合矩阵
  12. django数据库错误django. db. utils. OperationalError: ( 1044,‘Access denied for user’ erqueque’@' %’to‘dj’
  13. iphone icloud无法载入储存空间信息
  14. SQL Server 数据库之视图
  15. [创业-39]:中小公司的组织架构与公司管理
  16. bilibili视频爬取报错
  17. 关于final修饰的变量赋值的问题
  18. UOS如何格式化U盘
  19. IP地址的配置与运用,全网通
  20. 安恒西湖论剑周周练Reverse刮开有奖WP

热门文章

  1. 新手探索NLP(二)
  2. 开发完成的springboot项目扩展 swagger
  3. Jquery : 上下滚动--单行 批量多行 文字图片翻屏【转】
  4. python版本与编码的区别
  5. css清除浮动的处理方法
  6. 把二元查找树转变成排序的双向链表
  7. Jsp页面中常用的EL表达式
  8. POJ 1251 Jungle Roads
  9. 支付宝支付 第十二集:狂神、飞哥支付宝支付配置代码(免费资源,拿走不谢)
  10. 可视化文本数据—词云