java通过反射机制获取类的属性域

在运行时通过反射机制获取类的属性域,用法举例如下:

// Class类:

1.public Field[] getFields()

throws SecurityException;// 获取所有从父类中继承而本类未覆写的属性;

2.public Field[] getDeclaredFields()

throws SecurityException;//返回本类中声明的域;

// Field类:

public final class Field

extends AccessibleObject

implements Member;// .lang.reflect;

1.public int getModifiers();// 获取修饰符

2.public String getName(); // 属性名字

3.public Class> getType();// 属性类型

——-实例:

package com.mldn;

import .lang.reflect.Field;

import .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:~$ com.mldn.GetFields

公共属性: public static final .lang.String NATIONAL

本类属性: private java.lang.String name

本类属性: private int age

*/

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《java通过反射机制获取类的属性域
本文地址:https://www.zhiletu.com/archives-142.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微