现在的位置: 首页 > 综合 > 正文

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

2013年11月12日 ⁄ 综合 ⁄ 共 2239字 ⁄ 字号 评论关闭
文章目录

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

 

 

抱歉!评论已关闭.