灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2861回复:0

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

楼主#
更多 发布于:2013-05-12 12:53
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.getModifiers());
    System.out.print(mod + "  
");
    System.out.print("属性名字是:"+f.getName()+"  ");
    
System.out.println(f.getType().getName());
   }*/
  }
  {
  
Field f[] = c.getDeclaredFields(); // 取得全部的变量     不包括接口的属性
   for (int i = 0;
i < f.length; i++) {
    String mod =
Modifier.toString(f.getModifiers());
    System.out.print(mod + "  
");
    System.out.print("属性名字是:"+f.getName()+"  ");
    
System.out.println(f.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 评分0
游客

返回顶部