Java反射机制(取得类的全部的属性)

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/8910470

  getFields

 public Field[] getFields()
                  throws SecurityException
返回一个包含某些 Field 对象的数组, 这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果类或接口没有可访问的公共字段,或者表示一个数组类、一个基本类型或 void,则此方法返回长度为 0 的数组。

特别地,如果该 Class 对象表示一个类,则此方法返回该类及其所有超类的公共字段。如果该 Class 对象表示一个接口,则此方法返回该接口及其所有超接口的公共字段。

该方法不反映数组类的隐式长度字段。用户代码应使用 Array 类的方法来操作数组。

getDeclaredFields

public Field[] getDeclaredFields()
                          throws SecurityException
返回 Field 对象的一个数组, 这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。

具体实现代码实例:

GetFieldsDemo01

package org.lxh.demo.classdemo04;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class GetFieldsDemo01 {

 public static void main(String[] args) throws Exception {
  Class<?> c = Class.forName("org.lxh.demo.classdemo04.Person");
  {
   /*Field f[] = c.getFields(); // 取得全部的变量   共有的属性,可以访问的属性
   for (int i = 0; i < f.length; i++) {
    String mod = Modifier.toString(f[i].getModifiers());
    System.out.print(mod + "  ");
    System.out.print("属性名字是:"+f[i].getName()+"  ");
    System.out.println(f[i].getType().getName());
   }*/
  }
  {
   Field f[] = c.getDeclaredFields(); // 取得全部的变量     不包括接口的属性
   for (int i = 0; i < f.length; i++) {
    String mod = Modifier.toString(f[i].getModifiers());
    System.out.print(mod + "  ");
    System.out.print("属性名字是:"+f[i].getName()+"  ");
    System.out.println(f[i].getType().getName());
   }
  }
 }
}
 Person

package org.lxh.demo.classdemo04;

interface Info {
 public static final String AUTHOR = "MLDN";
    public String jiekou=null;
    public int shuzhi=0;
 public String getInfo();

 public String say(String name, String content);

 public void sayHello();
}

public class Person implements Info {
 private String name;
 private int age;
 public int phone;
 public String sex;

 public Person() {//无参构造方法
 }

 public Person(String name) {
  this.setName(name);
 }

 public Person(String name, int age) {
  this(name);
  this.setAge(age);
 }

 public String getInfo() {
  return "Hello World!!!";
 }

 public String say(String name, String content) {
  return name + "说了:" + content;
 }

 public void sayHello() {
  System.out.println("hello --> " + AUTHOR);
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public String toString() {
  return "姓名:" + this.name + ";年龄:" + this.age;
 }
}

 

 
相关文章
|
3天前
|
存储 算法 Java
Java HashSet:底层工作原理与实现机制
本文介绍了Java中HashSet的工作原理,包括其基于HashMap实现的底层机制。通过示例代码展示了HashSet如何添加元素,并解析了add方法的具体过程,包括计算hash值、处理碰撞及扩容机制。
|
1天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
13 6
|
3天前
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
|
2天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
10 2
|
3天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。
【10月更文挑战第14天】从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。本文深入探讨Set的核心理念,并通过示例代码展示了HashSet和TreeSet的特点和应用场景。
9 2
|
3天前
|
存储 Java 索引
Java 中集合框架的常见接口和类
【10月更文挑战第13天】这些只是集合框架中的一部分常见接口和类,还有其他一些如 Queue、Deque 等接口以及相关的实现类。理解和掌握这些集合的特点和用法对于高效编程非常重要。
|
5天前
|
Java 程序员 开发者
深入探索Java中的异常处理机制
【10月更文挑战第12天】 本文旨在全面解析Java的异常处理机制,从基本概念到高级技巧,为读者提供一个清晰的学习路径。我们将探讨try-catch-finally块的使用、throws关键字的作用以及自定义异常类的创建方法。此外,文章还将通过实际案例分析,展示如何有效利用Java异常处理来提高程序的鲁棒性和可维护性。无论是初学者还是经验丰富的开发者,都能在本文中找到有价值的信息和实用的建议。
|
8天前
|
Java
让星星⭐月亮告诉你,Java NIO之Buffer详解 属性capacity/position/limit/mark 方法put(X)/get()/flip()/compact()/clear()
这段代码演示了Java NIO中`ByteBuffer`的基本操作,包括分配、写入、翻转、读取、压缩和清空缓冲区。通过示例展示了`position`、`limit`和`mark`属性的变化过程,帮助理解缓冲区的工作原理。
17 2
|
8天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
21 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
5天前
|
Java 数据库连接
深入探索研究Java中的异常处理机制
【10月更文挑战第8天】
10 0