反射基础--查看类成员

反射查看类成员

说明

反射机制查看类名等信息后,是不是也可以查看类成员,这样,我们就可以通过类成员,进行其他的操作了。

技巧

Class类常用的访问类成员方法

方法名作用
getConstructors()返回由该类对象的所有构造方法组成的数组
getDeclaredFields()返回由该类对象的所有非继承域组成的数组
getDeclaredMethods()返回由该类对象的所有非继承方法组成的数组

代码实例

package reflect;

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

public class ClassViewer {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> clazz = Class.forName("java.util.ArrayList");
        System.out.println("类的标准名称为:" + clazz.getCanonicalName());

        //获取该类对象的所有构造方法
        Constructor[] constructors = clazz.getConstructors();
        System.out.println("类的构造方法:");
        if (constructors.length != 0) {
            for (Constructor constructor: constructors
                 ) {
                System.out.println("\t" + constructor);
            }
        }else {
            System.out.println("空");
        }

        //获得该类对象所有非继承域
        Field[] fields = clazz.getDeclaredFields();
        System.out.println("类的非继承域变量:");
        if (fields.length != 0 ) {
            for (Field field: fields
                 ) {
                System.out.println("\t" + field);
            }
        }else {
            System.out.println("空");
        }

        //获得该类对象的所有非继承方法
        Method[] methods = clazz.getDeclaredMethods();
        System.out.println("类的非继承方法:");
        if (methods.length != 0 ) {
            for (Method method: methods
                 ) {
                System.out.println("\t" + method);
            }
        }else {
            System.out.println("空");
        }
    }
}

运行结果:

类的标准名称为:java.util.ArrayList
类的构造方法:
	public java.util.ArrayList(java.util.Collection)
	public java.util.ArrayList()
	public java.util.ArrayList(int)
类的非继承域变量:
	private static final long java.util.ArrayList.serialVersionUID
	private static final int java.util.ArrayList.DEFAULT_CAPACITY
	private static final java.lang.Object[] java.util.ArrayList.EMPTY_ELEMENTDATA
	private static final java.lang.Object[] java.util.ArrayList.DEFAULTCAPACITY_EMPTY_ELEMENTDATA
	transient java.lang.Object[] java.util.ArrayList.elementData
	private int java.util.ArrayList.size
	private static final int java.util.ArrayList.MAX_ARRAY_SIZE
类的非继承方法:
	public boolean java.util.ArrayList.add(java.lang.Object)
	public void java.util.ArrayList.add(int,java.lang.Object)
	public boolean java.util.ArrayList.remove(java.lang.Object)
	public java.lang.Object java.util.ArrayList.remove(int)
	public java.lang.Object java.util.ArrayList.get(int)
	public java.lang.Object java.util.ArrayList.clone()
	public int java.util.ArrayList.indexOf(java.lang.Object)
	public void java.util.ArrayList.clear()
	public boolean java.util.ArrayList.contains(java.lang.Object)
	public boolean java.util.ArrayList.isEmpty()
	public java.util.Iterator java.util.ArrayList.iterator()
	public int java.util.ArrayList.lastIndexOf(java.lang.Object)
	public void java.util.ArrayList.replaceAll(java.util.function.UnaryOperator)
	public int java.util.ArrayList.size()
	public java.util.List java.util.ArrayList.subList(int,int)
	public java.lang.Object[] java.util.ArrayList.toArray(java.lang.Object[])
	public java.lang.Object[] java.util.ArrayList.toArray()
	public java.util.Spliterator java.util.ArrayList.spliterator()
	static int java.util.ArrayList.access$100(java.util.ArrayList)
	public boolean java.util.ArrayList.addAll(int,java.util.Collection)
	public boolean java.util.ArrayList.addAll(java.util.Collection)
	private void java.util.ArrayList.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundException
	private void java.util.ArrayList.writeObject(java.io.ObjectOutputStream) throws java.io.IOException
	public void java.util.ArrayList.forEach(java.util.function.Consumer)
	public java.lang.Object java.util.ArrayList.set(int,java.lang.Object)
	public void java.util.ArrayList.ensureCapacity(int)
	public void java.util.ArrayList.trimToSize()
	private void java.util.ArrayList.ensureCapacityInternal(int)
	java.lang.Object java.util.ArrayList.elementData(int)
	private void java.util.ArrayList.grow(int)
	private static int java.util.ArrayList.hugeCapacity(int)
	public java.util.ListIterator java.util.ArrayList.listIterator(int)
	public java.util.ListIterator java.util.ArrayList.listIterator()
	public boolean java.util.ArrayList.removeAll(java.util.Collection)
	public boolean java.util.ArrayList.removeIf(java.util.function.Predicate)
	protected void java.util.ArrayList.removeRange(int,int)
	public boolean java.util.ArrayList.retainAll(java.util.Collection)
	public void java.util.ArrayList.sort(java.util.Comparator)
	private java.lang.String java.util.ArrayList.outOfBoundsMsg(int)
	private void java.util.ArrayList.rangeCheckForAdd(int)
	private boolean java.util.ArrayList.batchRemove(java.util.Collection,boolean)
	private void java.util.ArrayList.ensureExplicitCapacity(int)
	private void java.util.ArrayList.fastRemove(int)
	private void java.util.ArrayList.rangeCheck(int)
	static void java.util.ArrayList.subListRangeCheck(int,int,int)

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值