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

  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;
 }
}

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arisono

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值