Javs 反射 之 获取全部属性

package com.cn.service;

public interface China {

	public static final String NATIONAL="China";
	
	public static final String AUTHOR="老李";
	
	public void sayChina();
	
	public String sayHello(String name,int age);
}

package com.cn.model;

import com.cn.service.China;

public class Person implements China{

	private String name;
	
	private int age;
	
	public Person(){
		
	}
	
	public Person(String name){
		this.name=name;
	}
	
	public Person(String name,int age){
		this(name);//调用有一个参数的构造函数
		this.setAge(age);
	}
	
	public void sayChina() {
		// TODO Auto-generated method stub
		System.out.println("作者:"+AUTHOR+" ,国籍: "+NATIONAL);
	}

	public String sayHello(String name, int age) {
		// TODO Auto-generated method stub
		return name+",你好!我今年"+age+"岁了";
	}

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

}


package com.cn.component;

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

public class GetFieldDemo {

	public static void main(String args[]) {
		Class<?> c = null;
		try {
			c = Class.forName("com.cn.model.Person");
		} catch (ClassNotFoundException e) {

			e.printStackTrace();
		}
		{
			Field fields[] = c.getDeclaredFields(); // 取得本类的属性,这里只是获取person类中自己的属性
			for (int i = 0; i < fields.length; i++) {
				Class<?> type = fields[i].getType();// 取得属性类型
				int mo = fields[i].getModifiers();// 取得属性修饰符的数字
				String priv = Modifier.toString(mo);// 取得属性的修饰符
				System.out.println("本类属性:");
				System.out.println(priv + " ");//
				System.out.println(type.getName() + " ");// 输出属性类型名称
				System.out.println(fields[i].getName());// 输出属性名称
			}
			// 输出结果:
			// 本类属性:
			// private
			// java.lang.String
			// name
			// 本类属性:
			// private
			// int
			// age

		}
		System.out.println("===========分隔符===========");
		{
			Field f[]=c.getFields();//getFields方法时,获取父类或者借口中的字段
			for(int i=0;i<f.length;i++){

				Class<?> c2=f[i].getType();
				String typeName=c2.getName();//获取类型名称
				int mo=f[i].getModifiers();
				String priv=Modifier.toString(mo);
				System.out.println("父类属性:");
				System.out.println(priv+"  ");
				System.out.println(typeName+"  ");
				System.out.println(f[i].getName()+"  ");
			}
//			===========分隔符===========
//				父类属性:
//				public static final  
//				java.lang.String  
//				NATIONAL  
//				父类属性:
//				public static final  
//				java.lang.String  
//				AUTHOR  

		}
	}
}

 

你可能感兴趣的:(C++,c,C#,F#)