JAVA高级基础(56)---获取类的私有属性和父类及实现的接口

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84983239

获取类的信息

  •     获取构造方法
  •     获取public属性
  •     获取public 方法
  •     获取该类的私有的属性和方法:getDeclaredField()/getDeclaredMethod()
  •     获取该类的父类  
  •     获取该类实现的接口
package org.lanqiao.reflect.demo;

import java.io.Serializable;

public class Student  implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private  String  name;
	private  int age;
	public Student() {
	}
	public Student(String name, int age) {
		this.name = name;
		this.age = 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;
	}
	private void  show() {
		
		System.out.println("show 。。。。");
	}
}
package org.lanqiao.reflect.demo;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class GetClassInfo {
	public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
		// 1 
		Student stu = new Student();
		stu.setName("张三");
		stu.setAge(22);
		Class<?> clazz1 = stu.getClass();
		//2
		Class<?> clazz2 = Student.class;
		//3 
		Class<?> clazz3 = Class.forName("org.lanqiao.reflect.demo.Student");
		
		// 获取所有属性
		Field[]  fs = clazz3.getFields();
		for(Field f : fs) {
			System.out.println(f);
			
		}
		//获取特定的属性
		/*Field f = clazz3.getField("name");//获取某一个属性
		System.out.println(f.get(stu));//通过Field对象的get(Object  obj)方法  获取某一个对象的该属性的值
		f.set(stu, "李四");//修改stu的name属性的值为李四
		System.out.println(f.get(stu));*/
		//获取私有的属性和方法
		//获取所有的私有的属性
		Field[] fds = clazz3.getDeclaredFields();
		for(Field  fd : fds) {
			System.out.println(fd);
			
		}
		//获取特定的私有的属性
		Field fd = clazz3.getDeclaredField("name");
		//获取该私有属性的值
		//System.out.println(fd.get(stu));
		//获取私有的方法
		Method m = clazz3.getDeclaredMethod("show");
		//m.invoke(stu);
		Class sc = clazz3.getSuperclass();
		System.out.println(sc);
		
		Class[] carray = clazz3.getInterfaces();
		for(Class ca :carray) {
			System.out.println(ca);
			
		}
	}
}

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84983239
今日推荐