Java反射机制之获得其他类中的所有属性

/**
 * 只需要每天进步一点点
 */
package reflectexercise;


import java.lang.reflect.Field;
import java.lang.reflect.Modifier;


/**
 * @author 不负代码不负卿
 * @date 2017年9月2日
 * @description:获取其他类中的全部属性
 */
public class ReflectDemo3 {
public static void main(String[] args) {
Class<?> demo = null;
try {
demo = Class.forName("reflectexercise.Person");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("========本类属性==========");
/**获得类中属性
* getDeclaredFields()//获得类中所有的public和非public属性的方法
* Field[] getFields()//获得类中所有public属性的方法 
*/
Field[] field = demo.getDeclaredFields();
//Field[] field=demo.getFields();
for (int i = 0; i < field.length; i++) {

// 权限修饰符
/**
* int getModifiers() 以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符。
*/
int mo = field[i].getModifiers();
/**
* String toString() 返回此修饰符的小写名称。
*/
String priv = Modifier.toString(mo);

// 属性类型
/**
* Class<?> getType() 返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。
*/
Class<?> type = field[i].getType();

/**
* String getName() 返回此 Field 对象表示的字段的名称。
*/
System.out.println(priv + " " + type.getName() + " " + field[i].getName());
}

System.out.println("(((((((((((((((((");
/**
* Field getField(String name)//根据变量名得到相应的public变量的方法
* Field getDeclaredField(String name)//根据变量名获得public和非public变量 Field[]
*/
try {
Field field1=demo.getField("count");
//Field field1=demo.getDeclaredField("age");
int modify=field1.getModifiers();
String strModify=Modifier.toString(modify);
Class type1=field1.getType();
System.out.println("修饰符"+strModify+"变量类型"+type1+"变量名"+field1.getName());
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}



/**
 * 
 */
package reflectexercise;


/**
 * @author 不负代码不负卿
 * @date 2017年9月2日
 * @description:
 */
public class Person {
private String name;
private int age;
private String sex;
public int count;
public String score;
//构造参数
public Person() {
System.out.println("----构造函数---");
}
public Person(String name,int age) {
this.name=name;
this.age=age;
}

protected Person(String name) {
this.name=name;
}

protected Person(String name,int age ,String sex) {
this.name=name;
this.age=age;
this.sex=sex;
}
//静态的参数初始化
static {
System.out.println("---静态的参数初始化---");
}
//非静态的参数初始化
{
System.out.println("----非静态的参数初始化---");
}
}

测试的结果如下:(全部结果需打开注释部分代码)

---静态的参数初始化---
========本类属性==========
private java.lang.String name
private int age
private java.lang.String sex
public int count
public java.lang.String score
(((((((((((((((((
修饰符public变量类型int变量名count

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值