java通过反射机制获取类的属性域
在运行时通过反射机制获取类的属性域,用法举例如下:
// Class类:
1.public Field[] getFields()
throws SecurityException;// 获取所有从父类中继承而本类未覆写的属性;
2.public Field[] getDeclaredFields()
throws SecurityException;//返回本类中声明的域;
// Field类:
public final class Field
extends AccessibleObject
implements Member;// java.lang.reflect;
1.public int getModifiers();// 获取修饰符
2.public String getName(); // 属性名字
3.public Class> getType();// 属性类型
——-实例:
package com.mldn;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier; // 修饰符定义类
public class GetFields
{
public static void main(String[] args)
{
Class> c = null; // 声明Class对象
try
{
c = Class.forName(“com.mldn.Person”); // 获取T类的反射
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Field[] cons1 = c.getDeclaredFields(); // 取得所有本类中声明的属性
Field[] cons = c.getFields(); // 取得所有公共属性,从父类继承
for (Field c1 : cons)
{
System.out.print(“公共属性: “);
int mo = c1.getModifiers(); // 1.获取当前属性的修饰符(访问权限)
System.out.print(Modifier.toString(mo) + ” “);
Class> para = c1.getType(); // 2.获取当前属性的类型
System.out.print(para.getName() + ” “);
System.out.println(c1.getName()); // 3.打印属性名
}
for (Field c1 : cons1)
{
System.out.print(“本类属性: “);
int mo = c1.getModifiers(); // 1.获取当前属性的修饰符(访问权限)
System.out.print(Modifier.toString(mo) + ” “);
Class> para = c1.getType(); // 2.获取当前属性的类型
System.out.print(para.getName() + ” “);
System.out.println(c1.getName()); // 3.打印属性名
}
}
}
interface Chinese
{
public static final String NATIONAL = “China”; // 全局常量
public void sayChina(); // 抽象方法
public void sayHello();
}
class Person implements Chinese
{
private String name = null;
private int age = 0;
public Person() // 无参构造
{}
public Person(String name, int age)
{ // 有参构造
this.name = name;
this.age = age;
}
public void sayChina() // 覆写
{
System.out.println(“China,I'm Chinese!”);
}
public void sayHello() // 覆写
{
System.out.println(“Hello, World!”);
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
public String toString()
{
return “姓名:” + this.name + ” 年龄:” + this.age;
}
}
/* 这里只是通过Field类的方法打印方法的详细信息
ubuntu@xu-desktop:~$ java com.mldn.GetFields
公共属性: public static final java.lang.String NATIONAL
本类属性: private java.lang.String name
本类属性: private int age
*/
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《java通过反射机制获取类的属性域》
本文地址:https://www.zhiletu.com/archives-142.html
关注公众号:
微信赞赏支付宝赞赏